2つのcronリダイレクトの違い

2つのcronリダイレクトの違い

次の2つの動作モードの違いは何ですかcron?基本的にファイルに書き込んで、どのファイルが優先または正しいかを確認したいと思います。

2 * * * * python script.py >> /tmp/script.log

比較:

2 * * * * python script.py >> /tmp/script.log 2>&1

どちらもログに記録しているように見えますが、最初のエントリがより頻繁に「フラッシュ」されるのではないでしょうか?

ほとんどの出力は通常の print ステートメントを介して行われます。

print('hello')

私はこれがsys.stdout印刷ごとに暗黙的に書くのと同じだと思います。\n

ベストアンサー1

最初のリダイレクトでは、標準出力のみがscript.pyログファイルに追加されます。

スクリプトが標準エラーチャネル(Pythonic:write sys.stderr)からメッセージを生成すると、これらのメッセージは通常どおりに処理されますcron。つまり、cronデーモンはそのメッセージを収集し、操作が完了した後にローカルメッセージに送信しようとします。クローンジョブを所有しているユーザーに電子メールメッセージを送信します。

通常、これらのローカル電子メールはローカルメール転送エージェント(MTAなど)によって処理され、ユーザーのローカル電子メール受信トレイファイル(たとえば)に保存されます/var/mail/<username>。ただし、システムにローカルMTAがインストールされていない場合、このプロセスは失敗し、cronジョブエラーメッセージが失われる可能性があります。

システムにローカルシステムの外部にメールを送信することができる適切に構成されたMTAがある場合、この電子メール転送は目的の電子メールアドレスにリダイレクトできます。


2番目のリダイレクトは、標準出力と標準エラー出力をログファイルに追加します。 cronジョブがゼロ以外の結果コードで終了すると、cronデーモンはジョブ所有者に結果コードを報告するためにジョブ所有者にローカルの電子メールを送信しようとする可能性があります。

どちらが好ましいか正しいですか?これは、スクリプトが何をしているのか、そしてスクリプトエラーについての即時通知(電子メール経由)を望むかどうかによって異なります。

おすすめ記事