添付ファイルによるcrontab出力ファイル

添付ファイルによるcrontab出力ファイル

電子メールで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

関連情報