我有下面的cron作业运行一个Python脚本似乎安装好没有问题后,在Crontab中创build并保存(这是运行Centos7的服务器上)。 我没有看到日志文件,也没有看到任何输出到包含的电子邮件地址。 我试过这个:
*/2 * * * * /home/local/DEV/mdub/FTWFB/FTWFBUploader.py > /home/local/DEV/mdub/FTWFB/logs`date +\%Y-\%m-\%d-\%H:\%M:\%S`-cron.log 2>&1 | mailx -s “Facebook Uploads - Cronlog" [email protected]
和这个:
*/2 * * * * /home/local/DEV/mdub/FTWFB/FTWFBUploader.py | tee /home/local/DEV/mdub/FTWFB/logs`date +\%Y-\%m-\%d-\%H:\%M:\%S`-cron.log | mailx -s “Facebook Uploads - Cronlog" [email protected]
我究竟做错了什么?
在这两个文件我运行chmod +x (filename) ,当我手动运行脚本他们运行和按预期输出。
首先,在configuration一个crontab时,使用你正在调用的任何命令和脚本的完整path。 例如:
/usr/bin/tee mailx应该是/bin/mailx date应该是/bin/date 注意:如果系统上的path不同,则根据需要进行更改
而且,在crontab中链接命令(即pipe道, | )可能会很快变得混乱。 把这些命令放在一个脚本中,然后从cron中调用它可能会更好。
如果这不帮助遵循这些一般的cron故障排除步骤:
validationcrond已启用并正在运行,例如:
$ systemctl status crond | grep enabled Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled) $ ps -ef | grep ^root.*crond root 1251 1 0 May15 ? 00:00:55 /usr/sbin/crond -n
检查cron日志以查看是否有任何错误出现(将UserNamereplace为UserName的名称):
grep UserName /var/log/cron
检查用户的邮件文件以查看是否有任何cron输出显示在那里:
more /var/mail/UserName
如果一切都失败了,在crontab项的末尾附加一个redirect,以帮助捕获可能发生的虚假错误。 例如,而不是这个:
* * * * * /bin/date | /usr/bin/mailx -s cron.test [email protected]
做这个:
* * * * * /bin/date | /usr/bin/mailx -s cron.test [email protected] > /tmp/crontab.test.UserName.log 2>&1
这里最好的做法是编写一个脚本,并通过cron中的完整path调用该脚本。 这实际上只是增强了Gene的说法,但是编写一个能够运行这些命令的脚本允许您在将脚本放入cron之前对脚本进行testing。
另外,从长远来看,这使得cron更易于阅读。
克朗不允许%字符。