首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cron作业无声地失败

Cron作业无声地失败
EN

Server Fault用户
提问于 2009-08-18 15:57:13
回答 10查看 10K关注 0票数 5

我有一个python脚本,我想通过crontab运行它。我的crontab看起来是这样的:

代码语言:javascript
复制
5,20,35,50 * * * * /var/www/django-apps/callreport/util.py

该脚本被设置为解析一组平面文件并将信息放入MySQL db中,然后删除这些文件。它从命令行运行良好,数据被复制到db,平面文件被删除。但是,当设置为cron作业运行时,什么都不会发生。

在过去,当一个cron工作失败时,我会收到一封邮件,但我没有收到任何反馈,而且我仍然感觉自己是这个盒子上的一个系统管理员。我做错了什么?

EN

回答 10

Server Fault用户

回答已采纳

发布于 2009-10-19 05:58:24

“cron”作业的常见问题是,它们的环境为零--与复制您的环境的“at”作业不同。当某些东西从命令行而不是从“cron”运行时,我的经验是“环境”是最常见的问题之一。偶尔您会遇到另一个问题--“cron”作业不是与终端一起运行的,有时程序会对此感到混乱。然而,这是在1%的范围内,而99%的环境问题。

我使用的另一个关键技术是始终从“cron”运行shell脚本;shell脚本确保环境设置正确,然后运行真正的程序。如果“cron”的工作给我带来了问题,那么我就可以修改脚本来做以下有用的事情:

代码语言:javascript
复制
{
    date
    env | sort
    set -x
    ...what was there before adding the debug...
} >/tmp/cron.jobname.$ 2>&1

这会将所有输出--标准输出和标准错误--重定向到文件名。与进程ID相比,您可以在文件名中构建时间戳。分析日志文件通常会迅速发现问题。

票数 11
EN

Server Fault用户

发布于 2009-08-18 16:54:12

以下是一些解决问题的方法:

  • 检查您的系统日志,看看cron守护进程是否真正启动了脚本。
  • 如果您的作业未被记录,请尝试增加日志记录级别,以便cron记录每个作业的开始(请参阅man cron)。例如,如果您正在运行Vixie cron守护进程,这可以通过指定-L 1选项来完成(如果您也希望检查作业完成的时间,则指定-L 2 )。
  • 从您的Python开始,一开始就在/tmp目录上创建一个空文件(这是另一种帮助您验证脚本是否由cron调用并且没有问题启动的方法)
票数 2
EN

Server Fault用户

发布于 2009-08-18 16:55:55

巨蟒在哪里

输出应该是..。

/usr/bin/python

然后是脚本之前到python的完整路径。

5,20,35,50 *** /usr/bin/python /var/www/django-app/callreport/util.py

票数 2
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/55651

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档