感谢帮助我设置我的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因脚本调用的位置而发生变化...我完全确定。
答案 0 :(得分:6)
Cron总是在与您的想法不同的环境中运行: - )
我总是把我的cronjobs设置为:
*/10 * * * * ( date ; python /webapps/foo/manage.py fetch_articles ) >>/tmp/fetch.out 2>&1
确保我可以查看记录的内容。
这会将您的问题缩小到:
而且,在后一种情况下,希望你可以调试一些输出。如果没有,请将输出放在那里。
这样做的一种方法是:
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个进程,您可能会触发竞争条件。