SQLデータベースでエラーを確認し、エラーをログファイルに記録するスクリプトを実行するcronジョブがあります。ログファイルは、スクリプトを実行するコマンドに提供されます。スクリプトでエラーが検出された場合にのみ電子メールを受信したい場合は、電子メールにログを含めたいと思います。スクリプトでエラーが見つからない場合は、電子メールを受信したくありません。明らかに、スクリプトはエラーが見つからなかったときにログに記録します(私はこれを書いていません)。
20 6-10 * * 1-5 ~/job_failure_test.sh -o ~/job_fail.log 2>&1 /dev/null | mail -s "Errors" [email protected] < ~/job_fail.log
これまで、この行はログにエラーが記録されたときに私に電子メールを送信しますが、更新されたログは送信しません。最後に実行されたクローンジョブのログを私に送信します。
答え1
ただ変えてください(A管路)から||または)(スクリプトが終了コードを正しく使用していると仮定)エラーが発生した場合にのみ出力するようにスクリプトを変更する方が良いですが:
[email protected]
[email protected]
20 6-10 * * 1-5 ~/job_failure_test.sh
醜い方法;
20 6-10 * * 1-5 ~/job_failure_test.sh > ~/job_fail.log 2>&1 || mail -s "Errors" [email protected] < ~/job_fail.log
答え2
この機能はcronに組み込まれています!コマンドが出力を生成するか、ゼロ以外の状態を返す場合、cronは電子メールを送信します。
多くの最新のディストリビューションでは、ローカル電子メールを設定しません。そうでない場合は、メール転送エージェント(MTA)をインストールしてください。たとえば、参照してください。このスレッドUbuntuの場合、またはメールをローカルに転送するための最小MTA(cron用)?最小限のものを絶対にしたい場合。または、EximやPostfixなどの一般的なMTAをインストールし、ローカル転送専用に設定します(例:このスレッド) Debian の場合。ローカル電子メールを設定したら、お気に入りのメールクライアントを使用してローカル電子メールを読むことができます。
メールをローカルで読むのではなくファイルを作成できます~/.forward
すべてのローカル電子メールが配信される外部電子メールアドレスが含まれています。転送を選択した場合は、外部にメールを送信できるMTAが必要です("スマートホスト")。
または、MAIL
crontabで変数を設定してそのアドレスに直接電子メールを送信します。また、システムが外部に電子メールを送信できる必要があります。