cronジョブの出力が~/dead.letterに記録され続けるのはなぜですか?

cronジョブの出力が~/dead.letterに記録され続けるのはなぜですか?

crontar私は次のようにフォルダを圧縮するタスクを毎日実行します。私はtarそれが毎日stdoutに常に記録されていることを発見しました~/dead.letter。記録された内容は、手動で実行したときにコマンドラインに表示される圧縮ファイルのリストにすぎませんtar

検索dead.letter結果は、一部の手紙が正常に送信される前に中断されることに関連していることがわかりました。コンピュータの内容を監視し、特定の条件で電子メールを送信するデーモンとして実行されるシェルスクリプトがあります。次のコマンドを使用してデーモンを起動します。

setsid ~/send_mail_on_certain_event.sh >~/sendmail.log 2>&1 < /dev/null &

これは私のコンピュータで私が使用する(実際に使用する)唯一の場所であり、期待mailどおりに機能します(必要な電子メールを受け取ります)。これがジョブの出力書き込みに関連しているssmtpかどうかはわかりません。crondead.letter

答え1

cronジョブが失敗した場合、または出力がある場合、cronはそれをメールジョブユーザーにメールで送信しようとします。彼のためにメールを設定するとき。
標準出力に情報を書き込むtarコマンドがありますが、標準出力をリダイレクトする人はいません。すべてのcrontabジョブのすべてのstdoutとstderrを/ dev / null(または出力に興味がある場合はいくつかのログファイル)にリダイレクトする必要があります。
はい

10 0 * * * tar tvf /tmp/tar.tst /home/era >/dev/null 2>&1

少し愚かなことです。 tarに-vフラグを使用して、tarが書き込んだすべての内容を詳細に説明して削除するように依頼してください。しかし、これは次のようなものをテストしたいときのためです。

10 10 * * * tar tvf /tmp/tar.tst /home/era

それともテストしてみることができます。

* * * * * echo "Hello and Goodbye Era"

ユーザーアカウントでメールを探します。

関連情報