• 締切済み

これは何がしたいのでしょうか?(sh)

バッグアップスクリプトの一部です。解読できないので教えてください。 (1) 呼び出し側  ./apache.sh usr/local/apache apache.sh   . `dirname $0`/tape_rc.sh ``で囲まれた部分を展開したら 「. . /tape_rc.sh」になると思うのですが・・・。 --- (2) TAR_COMMAND="gtar -zpcf ${TAPE_DEV} -C /" $TAR_COMMAND --exclude=${PATH_TO_SAVE}/logs \ --exclude=${PATH_TO_SAVE}/*/logs ${PATH_TO_SAVE} --は何か特殊な機能なのでしょうか? よろしくお願いいたします。

みんなの回答

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

まず、(1) の方。 apache.sh が PATH の通っているところに置いてある場合を考えてください。 apache.sh と同じディレクトリに置かれている tape_rc.sh を処理する、という のが `dirname $0` の こころ です。 次に (2) の方。 -- が付くオプションは、慣習的に GNU 系のプログラムが拡張しているオプションです。 - が付くオプションは、getopts() が扱うもので、オプション文字は一文字で パラメータをひとつ取れる、パラメータ無しであれば、ひとつの - に続けて 打てる、などの特徴があります。 GNU 系のオプションは、ひとつの -- に複数のオプションを指定できませんが、 それぞれに、分かりやすい文字列を割り当てることができる、などの特徴が あります。

関連するQ&A

  • freeBSD 4.11p8からp9へupgrade後、httpsdがが起動しません

    今回のSAにより、freeBSD 4.11-R p8だったマシンをp9へアップグレードしました。makeworldの後reboot後、これまでのように # /usr/local/etc/rc.d/apache2.sh start でapacheを起動しようとしたところ、 Starting apache2. (48)Address already in use: make_sock: could not bind to address [::]:443 no listening sockets available, shutting down Unable to open logs のようなエラーが出て、apacheが立ち上がってくれません。 どなたかアドバイスいただけないでしょうか? よろしくお願いいたします。

  • テープにtarでバックアップしたものをリストアする方法

    いつも大変お世話になっております。 Solaris 8上で、以下のスクリプトを実行し、テープにtarファイルとしてバックアップをとりました。それをLinux(Redhat Enterprise Linux 5)でリストアしたいと思います。 方法を教えていただけないでしょうか。 Solaris上のバックアップスクリプト(/usr1,/usr2,/usr3が対象) -------------------------------------- #!/bin/sh cd /usr1;tar cvf /dev/rmt/0mn . cd /usr2;tar cvf /dev/rmt/0mn . cd /usr3;tar cvf /dev/rmt/0m . -------------------------------------- manや様々な書籍・Webを見てもいまいち「テープに書き込んだtarファイルの使い方」がわからなかったため、質問させていただきました。 実に初歩的な質問で恐縮ですが、宜しくお願いいたします。

  • apacheのログファイルがいつの間にか消える

    Redhat Linux7.0J apache_1.3.19 openssl_0.9.6b apache_1.3.19+ssl_1.44の環境で 下記のログファイルの中身が、いつの間にか 全て消えてなくなるのです。  マシンを再起動すれば、たちまちログ出力は 開始されるのですが、また気付いたら消えています。  消えるまでにどれだけの日数がかかるのかは 分かりません。サーバの再起動は3ヶ月に1回ぐらいは 実施していますが、毎回logのことを調べてはいないので どのタイミングで消えたかは全く不明です。 定期的に消えるような処理が自動的に動いているのでしょうか?(それはcronという機能のことですか?cronの設定とかよく分からないのですが現状どのようなcronが動いているか確認する手段(コマンド)はありますか?) [ログファイルは、下記のように1ファイル/1Wずつ保存されていて気付いたら中身が消えている] /usr/local/apache/logs/httpsd_access_log ・・・ /usr/local/apache/logs/httpsd_access_log.4 /usr/local/apache/logs/httpsd_error_log ・・・ /usr/local/apache/logs/httpsd_error_log.4 ログのrotationについては /etc/logrotate.d/syslogファイルに 下記を記述しています。  この記述方法が悪いのでしょうか? インストールの初期状態で自動的に記述されていた maiilogファイルなどを真似して記述したのですが 間違いがありますか? [/etc/logrotate.d/syslogファイルの記述] /usr/local/apache/logs/httpsd_access_log { postrotate /bin/kill -HUP `cat /var/run/xinetd.pid 2>/dev/null` 2>/dev/null || true endscript } /usr/local/apache/logs/httpsd_error_log { postrotate /bin/kill -HUP `cat /var/run/xinetd.pid 2>/dev/null` 2>/dev/null || true endscript }

  • sudoでシェルスクリプトを実行させたい

    /usr/bin/sudo を使って、xxx.shを実行させたいので、設定でxxx.shを許可しました。 その後Apacheで動くCGI(perlスクリプト)から、``を使って実行させようと考えています。 このときにこのxxx.shがうまく動きません。多分シェルにアクセスできないのだと思いますが、どうしたらこのスクリプトをroot権限で動かす事ができるようになるのでしょうか。関係あるかどうかわかりませんが、xxx.shの中身はディレクトリ作成コマンドなどです。ネットで検索したら、シェルスクリプトだけ許可にすればよいとあったのですが・・。セキュリティ的には/bin/shを許可するのはまずそうな気がするのですが、こちらを許可してもよいものでしょうか。 環境等 xxx.sh 755 所有者(user1) Apache実行ユーザ (apache) CGIの実行ユーザ(apache?) 挑戦したコマンド(とアパッチのログ) `/usr/bin/sudo sh ./xxx.sh`; ->パスワード求められます (/bin/shの権限がない?) `/usr/bin/sudo ./xxx.sh`; ->/usr/bin/sudo: unable to exec ファイルのパス No such file or directory (xxx.shのファイルの場所はあってます) `/usr/bin/sudo フルパス/xxx.sh`; ->/usr/bin/sudo: unable to exec ファイルのパス No such file or directory (xxx.shのファイルの場所はあってます) 不足の点などあればご指摘ください。

  • apacheでphp、exec、system関数でのsudo実行

    FreeBSD 7.0-STABLE でphpスクリプトを作っています。 apacheは2.0.63、phpはphp-4.4.9です。 apacheの設定 ユーザ、グループは、apache phpは safe_mode = offです。 sudoは apache ALL=(ALL) ALL と設定しています。 apacheを手動で起動 /usr/local/apache2/bin/apachectl start して、下記を実行すると <?PHP $cmd = "echo 'password' | sudo -S ls /root"; exec($cmd, $output); print_r($output); ?> 結果、 Array ( [0] => .cshrc [1] => .history [2] => .k5login [3] => .login [4] => .profile [5] => .ssh ) とうまく実行できるのですが apacheを自動起動した場合、 以下の方法をそれぞれ試しましたが # cp /usr/local/apache2/bin/apachectl /usr/local/etc/rc.d/apache.sh # chmod 0755 /usr/local/etc/rc.d/apache.sh より起動 /etc/rc.local # Start Apache /usr/local/apache2/bin/apachectl start より起動 crontab -e @reboot /usr/local/apache2/bin/apachectl start より起動 いずれも 結果は Array ( ) とうまくいきません。 どなたか原因のわかる方、教えていただけないでしょうか? 宜しくお願いいたします。

  • Apacheのインストール

    いつも拝見しています。 環境:Red Hat Enterprise Linux ES v.4 32bit/EM64T PHPをインストールしようと思ったら、configureでエラーになってしまったので Apacheもソースからインストールしようと思い、インストールできたのですが、Apacheの起動ができません。 # /usr/local/apache2/bin/apachectl configtest では問題ないのですが # /usr/local/apache2/bin/apachectl start を実行すると -------------------- (98)Address already in use: make_sock: could not bind to address [::]:80 no listening sockets available, shutting down Unable to open logs -------------------- とエラーになってしまいます。 また、/etc/rc.d/init.d/httpd にはシンボリックリンクを張らなくてはいけないのでしょうか? 張るとしたらどうすればいいですか? ご教授よろしくお願いいたします。

  • Apache2 のエラーについて

    Apache2 を、/usr/local/apache2/bin/apachectl start あるいは、/usr/local/apache2/bin/apachectl restart で、スタートさせようとすると、以下のエラーになります。 また、/usr/local/apache2/bin/apachectl stop を2回実行しても、 no pid file?といったコメントで、ブラウザからサイトへアクセスできません。 いったい、どうすればいいのでしょうか? /usr/local/apache2/bin/apachectl restart httpd not running, trying to start (48)Address already in use: could not bind to address 0.0.0.0:80 no listening sockets available, shutting down Unable to open logs

  • apacheのスタートアップについて

    初めましてLinux(RedHat9)の初心者です。 自動的に立ち上がるrc.localファイルにapachectl のパスを書いたのですが、立ち上がりません。 /etc/rc.d/rc.localに下記のパスを記入 /usr/local/apache/bin/apachectl start 仕方なく手動で立ち上げています。 このファイル以外に設定しなければならない場所が ありましたら教えて下さい。 ご教授を願います。

  • phpのインストールが上手く行きません

    お世話になります。 phpのインストールが上手く行きません。 make install で下記メッセージが出力し停止します。 [activating module `php4' in /usr/local/apache/conf/httpd.conf] cp libs/libphp4.so /usr/local/apache/libexec/libphp4.so cp: cannot stat `libs/libphp4.so': そのようなファイルやディレクトリはありません apxs:Break: Command failed with rc=1 make[1]: *** [install-sapi] エラー 1 make[1]: 出ます ディレクトリ `/usr/local/src/php-4.2.2' make: *** [install-recursive] エラー 1 phpインストールにあたり下記を実施いたしました。 OSはRedHat7.2です。 > apache1.3.24インストール # ./configure --enable-shared=max --enable-module=so # make # make install # /usr/local/apache/bin/httpd -l Compiled-in modules:  http_core.c  mod_so.c suexec: enabled; valid wrapper /usr/sbin/suexec > php4.2.2インストール $ tar xvzf php-4.2.2.tar.gz $ cd php-4.2.2/ext $ cp /****/php4_mbregex-1.3.1.tar.gz . $ tar xvzf php4_mbregex-1.3.1.tar.gz $ cd .. $ rm configure $ ./buildconf $ ./configure --with-pgsql \ --enable-track-vars \ --with-apxs=/usr/local/apache/bin/apxs \ --enable-versioning \ --enable-trans-sid \ --enable-mbstring \ --enable-mbstr-enc-trans \ --enable-mbregex $ make $ su # make install 最後のmake installが上記エラーをはいて停止してしまいます。 apacheを入れ直したりphpのバージョンを変えて試しましたが駄目でした。 apxsも/usr/local/apache/bin/の中にあります。 なにが悪いのか私ではさっぱり解りませんので どなたかご教授して頂ければと思います。。。 宜しくお願い致します。m(__)m

    • ベストアンサー
    • PHP
  • PostgreSQLをCentOS5にインストールしました。

    閲覧有難うございます。 質問内容なのですが、Postgresqlをインストールしたのですがpostgresql.confとpg_hba.confが見つかりません。 OSはCentOS5です。 インストール方法は以下の手順で行いました。 # /usr/sbin/adduser postgres # chown postgres:postgres /usr/local/pgsql # mkdir /usr/local/src/postgres-8.2.6 # chown postgres:postgres /usr/local/src/postgresql-8.3.7 # su - postgres # cd /usr/local/src # tar xfz /usr/local/src/postgres-8.2.6.tar.gz # cd /usr/local/src/postgres-8.2.6 # ./configure # make # make install また、 [root@ ~]# su - postgres -bash:  LD_LIBRARY_PATH=/usr/local/pgsql/lib: そのようなファイルやディレクトリはありません -bash:  export: command not found -bash:  PATH=/usr/local/pgsql/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin: そのようなファイルやディレクトリはありません -bash:  export: command not found -bash:  MANPATH=/usr/local/pgsql/man:: そのようなファイルやディレクトリはありません -bash:  export: command not found -bash:  export: command not found -bash:  PATH=/usr/local/pgsql/bin:/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin: そのようなファイルやディレクトリはありません -bash:  export: command not found -bash:  MANPATH=/usr/local/pgsql/man:: そのようなファイルやディレクトリはありません -bash:  export: command not found [postgres@ ~]$ のようなエラーがはかれるようになりました。 どうか皆様のお力をお貸しください。