見た目はシンプルですが、この種のcrontabの出力をメールにリダイレクトするにはどうすればよいですか?
00 06 * * * /usr/bin/php /home/user/myapp/testing.sh -e prod 1>> /var/log/CRONLOGS/testing_prod.log 2>&1
[email protected]を追加しようとしましたが、結果はありません。
よろしく
そこにあるcronエントリは、STDOUT
とSTDERR
の両方をファイルにリダイレクトしています:/var/log/CRONLOGS/testing_prod.log
。
必要なことを行う最も簡単な方法は、cronジョブの最後にmailx
を実行し、間接指定を使用してそのファイルを送信することです。
00 06 * * * /usr/bin/php /home/user/myapp/testing.sh -e prod 1>> /var/log/CRONLOGS/testing_prod.log 2>&1; mailx -s "Cron output" [email protected] < /var/log/CRONLOGS/testing_prod.log
ただし:cronジョブはログファイルにappendingであるため、古いエントリ(または回転)定期的に、以前のすべての出力と新しい出力を受け取ります。一時的なログに書き込む小さなシェルスクリプトを作成し、メールで送信して、メールログに追加することをお勧めします。
#!/bin/sh
/usr/bin/php /home/user/myapp/testing.sh -e prod 1>> /tmp/testing_prod$$.log 2>&1
mailx -s "Cron output" [email protected] < /tmp/testing_prod$$.log
cat /tmp/testing_prod$$.log >> /var/log/CRONLOGS/testing_prod.log
rm /tmp/testing_prod$$.log
これには、crontab
をより見栄えよくするという利点があります。
00 06 * * * /home/user/myapp/cronscript.sh