Amazon EC2インスタンスとして実行されているUbuntu Server 18.04でcrontabを操作する際に問題があります。
私のファイルには次の行があります/etc/crontab
。
*/15 * * * * root /bin/bash /home/ubuntu/gzip/over_time_compile_ec2.sh
しかし、うまくいかないようです。実行すると、sudo service cron status
次の結果が表示されます。
Feb 14 22:20:01 ip-172-31-15-110 CRON[15880]: pam_unix(cron:session): session opened for user ubuntu by (uid=0)
Feb 14 22:20:01 ip-172-31-15-110 CRON[15879]: pam_unix(cron:session): session opened for user root by (uid=0)
Feb 14 22:20:01 ip-172-31-15-110 CRON[15881]: pam_unix(cron:session): session opened for user root by (uid=0)
Feb 14 22:20:01 ip-172-31-15-110 CRON[15882]: (root) CMD (/home/ubuntu/gzip/compile_script.sh)
Feb 14 22:20:01 ip-172-31-15-110 CRON[15883]: (ubuntu) CMD (/home/ubuntu/gzip/compile_script.sh)
Feb 14 22:20:01 ip-172-31-15-110 CRON[15884]: (root) CMD (/bin/bash /home/ubuntu/gzip/over_time_compile_ec2.sh)
Feb 14 22:20:01 ip-172-31-15-110 CRON[15881]: (CRON) info (No MTA installed, discarding output)
Feb 14 22:20:01 ip-172-31-15-110 CRON[15881]: pam_unix(cron:session): session closed for user root
Feb 14 22:20:01 ip-172-31-15-110 CRON[15880]: (CRON) info (No MTA installed, discarding output)
Feb 14 22:20:01 ip-172-31-15-110 CRON[15880]: pam_unix(cron:session): session closed for user ubuntu
この行が見えますが、(CRON) info (No MTA installed, discarding output)
CRONが失敗してはいけません。そうですか?
答え1
MTA(postfixなど)がインストールされていなくてもcronジョブは失敗しませんが、cronはジョブ出力をジョブ所有者に電子メールで送信できません。
何らかの理由でジョブが失敗した場合、または出力が生成された場合は、その通知は受け取らず、その情報は削除されます。
MTA をインストールしない場合は、ログファイルのリダイレクト操作を使用します。
*/15 * * * * root /bin/bash /home/ubuntu/gzip/over_time_compile_ec2.sh >/tmp/job.out 2>/tmp/job.err
/tmp/job.out
これにより、標準出力メッセージとジョブによって生成された診断メッセージの両方が表示されます/tmp/job.err
。また、両方の種類のメッセージを>/tmp/job.out 2>&1
。
使用すると、ジョブが>
実行されるたびにこれらのファイルが消去され、再作成されます。を使用すると、>>
ファイルが追加されます(ただし、2>&1
同じファイルにリダイレクトする場合はそのままにしてください。2>>&1
機能しません)。
答え2
私のファイルには、over_time_compile_ec2.sh
cronが現在のディレクトリにあるので、他のスクリプトへのパスがありますが、そうではありません。
だから私は他のスクリプトにフルパスを追加しました。