エラーが発生した場合は、cronからEメールのみを受信できますか?
ほとんどの場合、ジョブはうまく実行されます。出力にはあまり興味がありません。
まれに失敗した場合にのみ知りたいか、知りたいです。
私は持っていますプログラムメール動作します。しかし、私が説明した内容が外部からcronを管理するのに「正しい」ものであるかどうかはわかりません。
答え1
コマンドはchronic
以下から来ます。その他のユーティリティ失敗しない限り、コマンドを自動的に実行します。
マニュアルで引用すると、次のようになります。
Chronicはコマンドを実行し、コマンドが失敗した場合(ゼロ以外の終了または競合)にのみ標準出力と標準エラーを表示する準備をします。コマンドが成功すると、無関係な出力は非表示になります。
Chronicの一般的な用途は、cronジョブを実行することです。コマンドを静かに保ち、成功した場合に予期しない出力をメールで送信し、失敗した場合に十分な詳細な出力を処理するのではなく、いつでもコマンドを冗長に実行し、慢性を使用して成功時に出力を非表示にすることができます。
答え2
出力に興味がないので、ジョブのSTDOUTをにリダイレクトし、STDERRがメールで送信されるようにすることができます(環境変数を/dev/null
使用)。MAILTO
たとえば、次のようになります。
...
...
[email protected]
...
...
* * * * * /my/script.sh >/dev/null
STDERR(with STDERR)でのみ出力される場合は、メールを送信し、STDOUTは破棄されます。
もちろん、これはプログラムがSTDERRに書き込んだときにすでに失敗していると仮定します。いつもそうではありません。プログラムを制御できる場合は、プログラムにそれを実行させることができます。複雑な状況では、コマンドを実行してそれに応じてメールを送信するには、一種のラッパーを作成する必要があります。そして包装紙をcron
ワークとして活用してみてください。
答え3
エラーが発生した場合は、cronからEメールのみを受信できますか?
次の方法でcron呼び出しをラップできます。慢性病患者、呼び出されたプロセスにゼロ以外の戻りコードがある場合、または非追跡エラー出力がない限り、cron出力を使用するシェルスクリプト。
cronicを使用するには、適切な場所(たとえば)にスクリプトをダウンロードしてください。設定が正しい場合は、/usr/local/bin
crontabエントリの前にスクリプトパス(たとえば/usr/local/bin/cronic
)を追加するか、単に追加する必要があります。cronic
PATH
「エラー」はあなたの質問で誤って定義された用語なので、慎重に定義する必要があります。 cronicを便利に使用するには、エラー条件を定義する方法の1つとしてcronicでラップされた操作がエラーを報告していることを確認する必要があります。暗黙的な報告方法(テキスト文字列の作成などSTDOUT
)は、クロニックまたは他のcron報告メカニズムとの互換性を確保するために追加の考慮が必要です。
cronicサイトリンクに示されているように、他のラッパーも使用できます。
答え4
最初から最後までこんな考えができなかったかもしれませんが、
* * * * * yourthing.sh >/tmp/yourthing.log && rm -f /tmp/yourthing.log; cat /tmp/yourthing.log 2>/dev/null
通常はすべてを一時ファイル(mktemp
一意のファイル名を取得するために使用できます)にリダイレクトし、成功するとファイルを削除し、コンテンツがcat
まだ残っている場合はコンテンツを再度削除します(例:yourthing.shはエラー状態など)、 cronメーラーから受信しました。
メモリが正常な場合、出力がないとcronは何も送信しないため、ログファイルが空であるか、存在しない場合は何も起こりません。 (エラーメッセージを別の場所にリダイレクトします。)