電子メールでcrontab出力レポートの添付ファイルを受信できません。次のコードを試しましたが、空のファイルを受け取りました。
50 * * * * root touch /home/text_created >>
/home/log_crontab.txt | mail -s "Email Subject" -a "/home/log_contab.txt"
this_is_my_email
これは非常に簡単なテストです。 crontabとEメール送信機能を実行するだけです。上記のコードに問題がありますか?
答え1
/home/log_contab.txt
メッセージを送信するとファイルが空であったため、空のファイルを受け取りました。
なぜ:
匿名パイプ()の両側のプロセスが|
同時に開始されるため、左のコマンドがSTDOUT(あると仮定)をファイルに追加すると、コマンドは/home/log_contab.txt
実行mail
を完了します(/home/log_contab.txt
次の空のファイルを含む)。添付ファイルの先頭が空であった可能性があるためです。
欲しいものを得るには、順番に走ってください。ホームフレーズ:
50 * * * * command_1 && command_2
これに応じてコマンドを変更してください。
答え2
出力がパイプされる方法がmail
正しくありません。出力をファイルにリダイレクトするため、何もパイプに転送されません。パイプを使用すると両方のコマンドが同時に実行されるため、mail
最初のコマンドが完了するのを待つ必要はありません。
順次実行するために使用します;
。
出力は生成されませんtouch
。 cronジョブが成功したというメッセージを記録するには、メッセージを明示的に作成する必要があります。
50 * * * * root if touch /home/text_created; then echo "Touch successful"; else echo "Touch failed"; fi >> /home/log_crontab.txt 2>&1; mail -s "Email Subject" -a "/home/log_contab.txt" this_is_my_email