• ベストアンサー
  • 困ってます

シェルスクリプトとmaillogの関係

以下のようなシェルスクリプトを1時間ごとにcronで動かしています。 #!/bin/sh php -f check.php > result exit その結果、/var/log/maillogに、root宛てと思われる記録がシェルスクリプトと同じ1時間ごとに記録されるようになってしまいました。 maillogにその記録を残さないようにするにはどのようにしたらいいのでしょうか。 シェルスクリプトの書き方がおかしいのでしょうか。 よろしくお願いいたします。

共感・応援の気持ちを伝えよう!

  • 回答数2
  • 閲覧数189
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1
  • notnot
  • ベストアンサー率47% (4698/9891)

コマンドの出力があれば、メールで通知されます。出力が無ければメールは発生しません。 root宛てに届いているはずで、そのメールにおそらくphpのエラーメッセージが書いてあると想います。 それを見て check.php を修正してください。 スクリプトはそれで正常です。 エラーメッセージがどうしても消せない場合は、 #!/bin/sh php -f check.php > result 2>/dev/null exit とすれば、エラーメッセージを捨てることができますが、あとでわからなくなるので、 #!/bin/sh php -f check.php > result 2> error-message exit のようにファイルに保存する方が良いでしょうね。

共感・感謝の気持ちを伝えよう!

質問者からの補足

的確なアドバイスありがとうございます! 質問が逸れてしまうのですがsshでログイン後、root宛てのメールを見る方法はむずかしいでしょうか?

その他の回答 (1)

  • 回答No.2
  • notnot
  • ベストアンサー率47% (4698/9891)

>root宛てのメールを見る方法はむずかしいでしょうか? rootになった状態で、 mail

共感・感謝の気持ちを伝えよう!

質問者からの補足

ありがとうございます。 さっそく試してみたのですが no mail for root になってしまいました。 これから先は質問とはだいぶずれてしまうのでとりあえず閉めさせて頂きます。 どうもありがとうございました。

関連するQ&A

  • シェルスクリプトでPHPを実行したい

    シェルスクリプトでPHPを実行したいのですが、うまくできません。 centos5でcrontabに 20 0 * * * /bin/sh /var/www/html/test/test.sh と登録しています。 cronのlogをみたところ Dec 12 00:20:01 localhost crond[19060]: (root) CMD (/bin/sh /var/www/html/test/test.sh) と記録されていてここまでは問題ないように思えます。 test.shの中身は #!/bin/sh cd /var/www/html/test/ php -f daily.php > result exit になっています。 daily.phpが実行されないので、daily.phpに何かおかしなところがあるのかと思い daily.phpを直接ブラウザから起動してみたところ問題なく処理されました。 このような経緯でtest.shの中身が間違っていると思っているのですがどこが間違っているのか分かりません。 どなたかアドバイス頂けると助かります。

  • シェルスクリプト処理に時間やメモリ制限ありますか?

    下記のような処理をした場合、1時間シェルスクリプトが動作していることになると思うのですが、これによって何か不具合など起こる可能性はあるのでしょうか? たとえば、時間制限による強制処理やメモリの増大など、何か懸念されることがあるようでしたらアドバイス頂けると助かります。 #!/bin/sh php -f check.php > result sleep 1200 php -f check1.php > result sleep 1200 php -f check2.php > result sleep 1200 php -f check3.php > result exit どうぞよろしくお願いいたします。

  • cronのシェルスクリプトで特定のファイルを時間差で実行したい

    現在、下記内容を記述したシェルスクリプトを使っています。 #!/bin/sh cd /virtual/web/ wget test1.php -O result wget test2.php -O result wget test3.php -O result exit test1.php、test2.php、test3.phpを10分の間隔をあけて実行したいのですが、cron側で設定する以外にシェルスクリプト側で設定することは可能でしょうか? あと基本的なことなのですが、test.phpを実行したい(叩きたい)だけの場合、wgetではなく他のコマンドではできないでしょうか?このような場合はどんなコマンドが適切なのでしょうか?

  • cronでシェルスクリプトが実行されない

    Linuxでファイルのバックアップを取るため backup.shというシェルスクリプトを組み、コマンドから実行する場合問題ないことを 確認しています。ところがcronに設定し自動実行すると内容が実行されておりません。 /var/log/cronを確認したところ時間通り実行されているというログは残っています。 /var/spool/cron/にrootというファイルを作成し 00 23 * * * /BACKUP/backup.shを実行させたいのです。 なぜ、手動の場合は問題がないのにcronで設定すると問題が生じるのでしょう? もし、お分かりの方は教えてください。 OSはRed Hat Linux release 8.0 (Psyche)です。

  • シェルスクリプトでユーザ指定

    メールサーバにメールが届くと、固定の指定ユーザでPHPのファイルを実行するというシステムを作っていて質問があります。 Sendmailのaliasesでmlexe.shというシェルスクリプを起動して、シェルスクリプト内で指定したユーザu02でmls.phpを起動させようとして以下のスクリプトを作りました。 #!/bin/sh su u02 -c "/usr/bin/php /usr/local/apache/phtml/msv/mls.php" exit 3行目のexitは必要なんでしょうか?念のために書いているんですが。 これで準備ができたので、aliasesに設定したアドレスにメールを出しました。 すると、エラーが発生したというメールが返ってきました。その内容には ----- Transcript of session follows ----- Password: Sorry と書かれていたので、シェルスクリプトを実行したroot?がu02のパスワードが分からなかったのが原因だと思うのですがそうなんでしょうか? シェルスクリプトにu02のパスワードが必要なんですか?

  • maillog が更新されない

    http://oshiete1.goo.ne.jp/kotaeru.php3?q=153488 でlogについて質問した者です。 皆さんのご教授のおかげで、syslogは動くようになりました。 しかし、maillogのみ更新されないようです。 qmail+vpopmail でメールサーバーを作っています。 心あたりは /etc/system.conf を # Log all the mail messages in one place. mail.* /var/log/maillog 上記のように書き換えてしまったのが原因だと思うんですが、もともとが どうかいてあったのか分からなくなってしまいました。。

  • 2時間おきに時刻を新規ログに書き込む

    Linuxで2時間おきに時刻を新規のログに書き込みたいのですが、 うまく表示されません。 syslog.confに新しく2時間おきに時刻を書き込むログを加え、 新規ログに Sep 18 07:00:01 tky015 logger: 只今の時刻は 7時00分です Sep 18 08:00:01 tky015 logger: 只今の時刻は 8時00分です Sep 18 09:00:01 tky015 logger: 只今の時刻は 9時00分です Sep 18 10:00:01 tky015 logger: 只今の時刻は 10時00分です Sep 18 11:00:01 tky015 logger: 只今の時刻は 11時00分です という風に表示させたいです。 新規ログをtest.logとし、メッセージの表示はシェルを使用し、以下のようになりました。 ファイル名はtime.shです。 #!/bin/sh MESS='只今の時刻は' DATE1=`date "+%k"`'時' DATE2=`date "+%M"`'分' MESS=$MESS$DATE1$DATE2'です' logger -f /var/log/test.log $MESS 2時間おきに時刻を表示させるためにcronを使い、 * */2 * * * /bin/sh /root/time.sh syslog.confには、 #2時間おきに時間を書き込むログ cron.*         /var/log/test.log というふうにやりましたが、 時刻は/var/log/messagesに書き込まれてしまい、/var/log/test.logには Sep 17 07:00:01 tky015 crond[6480]: (root) CMD (/bin/sh /root/tanaka.sh) Sep 17 08:00:01 tky015 crond[6486]: (root) CMD (/bin/sh /root/tanaka.sh) Sep 17 09:00:02 tky015 crond[6492]: (root) CMD (/bin/sh /root/tanaka.sh) Sep 17 10:00:01 tky015 crond[6499]: (root) CMD (/bin/sh /root/tanaka.sh) Sep 17 11:00:01 tky015 crond[6506]: (root) CMD (/bin/sh /root/tanaka.sh) というふうに書かれてしまいます…。 syslog.confの書き方が間違っているんじゃないのかなと思うのですが、 どうすればいいのかわかりません。 OSはCentOS05です。 初心者ですので分からないこともあるかも知れませんが、 どなたかご教授ください。 よろしくお願いします。

  • シェルスクリプトで困っています 2

    度々申し訳ございません。 現在、Linuxマシン1からLinuxマシン2へTelnetでログインし、Linuxマシン2上にあるシェルスクリプト(/bin/sh)を実行し、Linuxマシン2上のプログラムを実行した後、Linuxマシン2からログアウトするシェルスクリプトを作成中です。 その、Linuxマシン2からログアウトする際に、 "exit"を記述しているのですが、その"exit"がTelnetログアウトの意味で実行されず、シェルスクリプトを終了するの意味で実行されていて困っています。 どなたか上手くTelnetからログアウトできるようにシェルスクリプトを組む方法をご存知ではないでしょうか?もし判りましたらご教授下さい。 よろしくお願い致します。

  • maillogを特定のユーザーも見れるようにしたい

    Linux初心者です。よろしくお願いします。 Redhat7.3にqmailをインストールして使用しています。 /var/log/maillog なのですが、所有者はrootになっていて、rootだけが読み書きできる状態になっています。 -rw------- 1 root root maillog 一般ユーザーがviで開こうとすると、権限が無いので断られます。 ある特定の一般ユーザーがこのログを見ることが出来るようにしたいのですが、どのような方法があるでしょうか。 一般ユーザー全てが見れる状態ではなく、例えばsampleuserという名前のユーザーだけがこのログを参照できるようにしたいのですが。 もちろんrootはこのまま読み書きできる状態を維持でかまいません。 よろしくお願い致します。

  • さくらVPSでcron指定はsh? php?

    これまで別のレンタルサーバで動作していたcronをさくらVPSでも動作させたいのですがうまくいきません。 ■これまで(レンタルサーバ) 1.cronにshファイルを指定 2.shファイル cd /var/www/★★ /usr/local/bin/php -d include_path='.:./●●.php ■今回(さくらVPS) /etc/crontab/ 05 7 * * * root /usr/bin/php /var/www/■■.sh ・どうしたら動作するでしょうか? ・/etc/crontab/の指定先は「phpファイル」「shファイル」の何れを指定するのでしょうか?