Crontab工作没有开始......想法?

时间:2010-03-05 02:40:32

标签: python linux ubuntu cron crontab

感谢帮助我设置我的cron工作,crontab对我来说真的是一个金矿。

不幸的是我遇到了问题,并且根本不知道它可能是什么......基本上,当邻居工作时,工作没有开始。我会解释


这是我的crontabs工作清单:

  

* / 10 * * * * python /webapps/foo/manage.py fetch_articles

     

* / 10 * * * * python /webapps/bar/manage.py fetch_books

我将它们写在文件中并使用crontab / path / to / file存储它们。

使用crontab -l检查并且作业在那里。


奇怪的是,其中一个通常每10分钟执行一次......但另一个则没有。我尝试手动输入命令,并且没有问题,它可以正常工作。


有人有建议吗?

非常感谢帮助,谢谢你们。


更新

我一直在系统日志文件中,我发现了这个:

  

3月5日02:50:01 localhost CRON [21652] :( root)CMD(python /webapps/foo/manage.py fetch_books)

这是否意味着crontab正在调用这项工作?


感谢您的回复!


固定它!非常感谢大家!!

问题是脚本默默地失败了,我相信这是由于PYTHON_PATH因脚本调用的位置而发生变化...我完全确定。

3 个答案:

答案 0 :(得分:6)

Cron总是在与您的想法不同的环境中运行: - )

我总是把我的cronjobs设置为:

*/10 * * * * ( date ; python /webapps/foo/manage.py fetch_articles ) >>/tmp/fetch.out 2>&1

确保我可以查看记录的内容。

这会将您的问题缩小到:

  • cron,如果没有出现临时文件;或
  • 你的脚本,如果它出现了。

而且,在后一种情况下,希望你可以调试一些输出。如果没有,请将输出放在那里。

这样做的一种方法是:

set -x
脚本顶部的

将导致在执行之前输出所有行。我的所有脚本都倾向于开始:

#!/bin/bash
#set -x

所以我可以在调试时取消注释第二行。

答案 1 :(得分:4)

从crontab联机帮助页:

  

BUGS          虽然 cron要求crontab中的每个条目都以a结尾   换行符,          crontab命令和cron守护程序都不会检测到这一点   错误。代替,          crontab似乎正常加载。但是,命令   永远不会跑。          最好的选择是确保您的crontab有一个空行   结束。

(我的重点)。

答案 2 :(得分:1)

我认为~unutbu的答案可能是正确的,如果它是第二个没有运行的工作。

然而,要检查的另一件事是/webapps/bar/manage.py是否需要对任何资源的独占访问,例如网络套接字/临时文件等。由于您同时启动2个进程,您可能会触发竞争条件。

相关问题