(/etc/cron.daily
、/etc/cron.hourly
、/etc/cron.weekly
などで)実行され、結果をroot@localhost
に電子メールで送信するcronジョブがいくつかあります。ジョブが成功した場合はこれらのメールを停止し、エラーが発生した場合にのみメールを送信します(これは、stdout
を/dev/null
にリダイレクトすることで実行できると理解しています)。個々のcronジョブに対してこれを行う方法は理解していますが、これらの特別なディレクトリ内のスクリプトはrun-parts
を使用して実行されます。これらのスクリプトの成功メールを抑制するための最良の方法は何ですか?
プログラムのラッパーの1つを使用すると、問題が発生したときにすべてを出力し、それ以外の場合はstdoutを飲み込むことができます。
一例として、 cronic の場合があります。「cronic」を「run-parts」の前に追加するだけです。例:
# m h dom mon dow user command
17 * * * * root cd / && /etc/cronic run-parts --report /etc/cron.hourly
どこ /etc/cronic
は、言及されたWebサイトからダウンロードされた実行可能なクロニックスクリプトのある場所です。
成功した電子メール通知を/dev/null
に送信して、通知が消えるようにする必要があります。
しかし、失敗した電子メール通知を見たいと思います。
つまり、最初にstdout
を/dev/null
に転送し、次に/dev/stderr
をstdout
に転送する必要があります。
cronジョブのリダイレクト部分をに変更してみてください
>/dev/null 2>&1
このリンク を参照してください
STDOUT
にのみ書き込み、エラーが発生した場合はSTDERR
に書き込みます。STDOUT
またはSTDERR
( Arch wiki )。したがって、エラー通知を保持したい場合は、STDERR
をリダイレクトせず、STDOUT
だけをリダイレクトしてください。
COMMAND > /dev/null
通常の>/dev/null 2>&1
を実行すると、両方を効果的に抑制できます( bashドキュメント )。
stdin
ファイル記述子を/ dev/nullのコピーにします。stderr
ファイル記述子をstdout
(すでに/ dev/nullを指している)のコピーにします。