如何调试Linux Ubuntu 中的cronjob 不被触发?

如何调试Linux Ubuntu 中的cronjob 不被触发?

我在Ubuntu Linux下。

我刚刚添加了这个 cron-job 每分钟运行一次

MAILTO="[email protected]"                                                                                                                                                                                    
* * * * *  cd /home/forge/bheng/public/code/scraper/; /usr/bin/python3 main.py

如果我运行这个命令

cd /home/forge/bheng/public/code/scraper/; /usr/bin/python3 main.py

效果很好。

我从未见过它运行或收到电子邮件。


我运行了一个mail命令

我有

└── mail                                                                                                           
"/var/mail/root": 3 messages 3 new                                                                                 
>N   1 Cron Daemon        Sun Oct 15 06:34  21/930   Cron <root@bheng> test -x /usr/sbin/anacron || ( cd / && run  
 N   2 long@bheng         Sun Oct 15 14:19  15/649   *** SECURITY information for bheng ***                        
 N   3 long@bheng         Sun Oct 15 14:19  15/649   *** SECURITY information for bheng ***                        
?

好像有问题,如何解决?


我是否忘记了什么或遗漏了什么?

答案1

如果 cron 作业由于某种原因失败,您将通过邮件收到相关消息。输入“邮件”并检查消息。

答案2

作为邮件的替代方案,请考虑将命令包装到 bash 脚本中,然后使用日志文件:

例如,您可以创建一个包含以下内容的脚本 /home/forge/scraper.bash:

#!/bin/bash -x
cd /home/forge/bheng/public/code/scraper/
/usr/bin/python3 main.py

授予脚本执行权限 ( chmod +x scraper.bash),然后按如下方式设置 cron:

* * * * * /home/forge/scraper.bash &>> /home/forge/scraper.log

执行输出(和错误)现在应该可以在 /home/forge/scraper.log 文件中找到。请注意,每次运行作业时,输出都会附加到日志文件中。

答案3

MAILTO文件中的设置通常crontab不是用于 Internet 电子邮件传送,而是用于本地用户帐户传送,例如rootsomeuser

相关内容