cron 任务失败的原因有很多。最常见的原因可能是:
- 语法错误
- 使用没有正确路径的可执行文件
- 使用 cron 环境中未定义的 shell 变量
- 尝试打开 GUI 而不指定
DISPLAY
等等...
有时真的很难理解哪个错误阻止了作业的执行。有没有办法检测 cron 作业中的错误?
答案1
设置本地邮件并获取 cron 任务输出邮件
当 cron 作业成功启动或由于某种原因执行失败时,cron 守护程序会自动向设置该 cron 作业的用户发送一封电子邮件。该邮件包含成功作业的描述或特定 cron 作业失败原因的详细报告。
如果您的本地邮件系统未设置,您将无法收到这些邮件。 cron 作业输出的电子邮件将只会死在本地邮件缓冲文件夹中。因此,您需要设置邮件守护程序来阅读这些邮件。请参阅此答案如何在 Thunderbird 中读取本地电子邮件获取所有本地邮件。
如果你的 cronjob 失败了,你会收到一封邮件,说明失败的原因。这是检测 cron job 设置错误的最佳方法之一。
其他方式
根据这个答案可以使用重定向将 cronjob 的错误信息保存到日志文件中。但您需要为 cron job 设置重定向,并自行指定日志文件。
还有/var/log/syslog
文件始终存在,用于检查你的 cron 作业是否按预期运行。
答案2
这里有一个详尽的答案,解释了如何让 16.04 LTS 系统创建一个单独的 cron.log 文件,以及如何创建wcron
实时监视它的命令。
16.04:如何让 cron 创建 cron.log 并实时监控它?
它还包括更改日志级别的信息,以便您不仅可以看到脚本启动(默认),还可以看到结束时间和错误。
它清楚地显示了它们产生的任何错误。