我有一个python脚本,我想通过crontab运行它。我的crontab看起来是这样的:
5,20,35,50 * * * * /var/www/django-apps/callreport/util.py该脚本被设置为解析一组平面文件并将信息放入MySQL db中,然后删除这些文件。它从命令行运行良好,数据被复制到db,平面文件被删除。但是,当设置为cron作业运行时,什么都不会发生。
在过去,当一个cron工作失败时,我会收到一封邮件,但我没有收到任何反馈,而且我仍然感觉自己是这个盒子上的一个系统管理员。我做错了什么?
发布于 2009-10-19 05:58:24
“cron”作业的常见问题是,它们的环境为零--与复制您的环境的“at”作业不同。当某些东西从命令行而不是从“cron”运行时,我的经验是“环境”是最常见的问题之一。偶尔您会遇到另一个问题--“cron”作业不是与终端一起运行的,有时程序会对此感到混乱。然而,这是在1%的范围内,而99%的环境问题。
我使用的另一个关键技术是始终从“cron”运行shell脚本;shell脚本确保环境设置正确,然后运行真正的程序。如果“cron”的工作给我带来了问题,那么我就可以修改脚本来做以下有用的事情:
{
date
env | sort
set -x
...what was there before adding the debug...
} >/tmp/cron.jobname.$ 2>&1这会将所有输出--标准输出和标准错误--重定向到文件名。与进程ID相比,您可以在文件名中构建时间戳。分析日志文件通常会迅速发现问题。
发布于 2009-08-18 16:54:12
以下是一些解决问题的方法:
cron记录每个作业的开始(请参阅man cron)。例如,如果您正在运行Vixie cron守护进程,这可以通过指定-L 1选项来完成(如果您也希望检查作业完成的时间,则指定-L 2 )。发布于 2009-08-18 16:55:55
巨蟒在哪里
输出应该是..。
/usr/bin/python
然后是脚本之前到python的完整路径。
5,20,35,50 *** /usr/bin/python /var/www/django-app/callreport/util.py
https://serverfault.com/questions/55651
复制相似问题