【问题标题】:Cron job mysteriously stopped running?Cron 作业神秘停止运行?
【发布时间】:2019-10-08 16:23:45
【问题描述】:

我在 Ubuntu 10.4 服务器上有一个 cron 作业,它无缘无故停止运行。 (这项工作已经运行了几个月并且没有改变。)我不是 *nix 大师,所以如果这是一个简单的问题,我恳求无知。我找不到任何理由或迹象表明这项工作会停止。我已经重新启动服务器但没有成功。这是工作:

# m h  dom mon dow   command
0 * * * * java -jar /home/mydir/myjar.jar >>/home/mydir/crontaboutput.txt

输出文件的最后一行显示程序在 2012 年 8 月 29 日运行。之后就什么都没有了。

有什么想法可以去哪里看吗?

【问题讨论】:

  • 作业运行时系统日志中应该有一些内容。您可以尝试的另一件事是将2>&1 添加到作业中以查看文本文件中的任何错误。
  • 或者您的crond 已停止,或更改了配置。

标签: linux crontab


【解决方案1】:

作业运行时,您的系统日志中应该有一些内容。您可以尝试的另一件事是将 2>&1 添加到作业中以查看文本文件中的任何错误。 – Lars Kotthoff 昨天

这被证明是关键信息 - 添加 2>&1 使我能够捕获在其他任何地方都没有报告的错误。完成后的命令行如下所示:

java -jar /home/mydir/myjar.jar  2>&1  >>/home/mydir/crontaboutput.txt

【讨论】:

    【解决方案2】:

    也许您的cron 守护程序已停止,或更改了配置(即/etc/cron.deny)。我建议制作一个 shell 脚本,并从crontab 运行它。我还建议在其他时间通过您的crontab 运行其他程序(仅用于测试)。你可以在你的shell脚本中使用logger命令syslog。查看系统日志文件。

    【讨论】:

      【解决方案3】:

      接受的答案是正确的,(即检查错误日志)在我的案例中指出了错误。除了检查以下问题

      1. include('../my_dir/my_file.php) 可以从 url 工作,但是在运行 cron 作业时它不起作用,会吐出错误。

      2. 如果您使用 $_SERVER['DOCUMENT_ROOT'],$_SERVER 变量在 cron 操作系统中不起作用,它将无法被识别,并且您将在 cron 作业中遇到错误。

      确保测试 cron 并让它运行,发送电子邮件等以确保它运行。

      【讨论】: