我在让 crontab 在作为 amazon ec2 实例运行的 ubuntu 服务器 18.04 中工作时遇到问题。
我的文件中有以下行/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 位于当前目录中,但事实并非如此。
所以我只是在其他脚本上添加了完整路径。