【问题标题】:Crontab job does not start... ideas?crontab 工作没有开始......想法?
【发布时间】:2011-01-23 23:05:55
【问题描述】:

感谢您帮助我设置 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 由于调用脚本的位置而发生变化......我完全确定。

【问题讨论】:

  • 消息是否告诉您有关错误的任何信息?
  • 您的系统错误日志中有什么内容吗?如果将这两个作业都放到一个 shell 脚本中,会有什么不同吗?
  • 我一直在 syslog 中,没有错误...我会在帖子中添加它。感谢您的提问!
  • 总是第一个运行而第二个不运行吗?
  • 是否可以包括您如何解决 PYTHON_PATH 错误?我遇到了同样的问题,我不知道该怎么办。

标签: python linux ubuntu cron crontab


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    我总是将我的 cronjobs 设置为:

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

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

    这会将您的问题缩小到:

    • cron,如果临时文件没有出现;或
    • 您的脚本(如果确实出现)。

    并且,在后一种情况下,希望会有一些可以调试的输出。如果没有,把输出放在那里。

    一种方法是把:

    set -x
    

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

    #!/bin/bash
    #set -x
    

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

    【讨论】:

      【解决方案3】:

      来自 crontab 手册页:

      错误 虽然 cron 要求 crontab 中的每个条目都以 换行符, crontab 命令和 cron 守护进程都不会检测到这一点 错误。反而, crontab 将显示正常加载。然而,命令 永远不会跑。 最好的选择是确保您的 crontab 在 结束。

      (我的重点)。

      【讨论】:

      • @RadiantHex 如果crontab -l 导致您的提示与上一个作业位于同一行,那么就是这种情况。
      猜你喜欢
      • 2021-09-25
      • 1970-01-01
      • 2016-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-02
      相关资源
      最近更新 更多