运行 cron 时出错:孙子 #10010 失败,退出状态为 2:1 次

运行 cron 时出错:孙子 #10010 失败,退出状态为 2:1 次

最近几周,我在我的 Debian 6 服务器上多次看到这种类型的错误。

我看到了不同的退出状态,1、2、25、255

 Errors when running cron:
grandchild #10010 failed with exit status 2: 1 Time(s)
grandchild #10042 failed with exit status 2: 1 Time(s)
grandchild #10062 failed with exit status 2: 1 Time(s)
grandchild #10080 failed with exit status 2: 1 Time(s)

或者

Errors when running cron:
grandchild #23015 failed with exit status 25: 1 Time(s)
grandchild #23115 failed with exit status 25: 1 Time(s)
grandchild #23223 failed with exit status 25: 1 Time(s)
grandchild #23319 failed with exit status 25: 1 Time(s)
grandchild #23432 failed with exit status 25: 1 Time(s)
grandchild #23510 failed with exit status 25: 1 Time(s)

查看系统日志,它看起来像这样:

Mar  6 06:41:01 myhost /USR/SBIN/CRON[10548]: (www-data) CMD (cd /home/httpd/cgi/inst && /usr/bin/perl /home/httpd/cgi/inst/scheduler.cgi > /dev/null
Mar  6 06:41:01 myhost /USR/SBIN/CRON[10546]: (CRON) error (grandchild #10548 failed with exit status 2)

我在许多服务器上都看到过这种情况,有不同的 cronjobs,但我还没有发现发生了什么。所以,我有两个问题:

  1. 退出状态代码,它们是什么意思?(1、2、25 或 255)。
  2. 我该怎么做才能进一步测试?以前有人见过这种情况吗?

注意:是的,我已经在谷歌上搜索过这个问题,但没有找到适合我的情况的解决方案。

其中一些 cron 作业每次都会出现这样的错误,而其他的只是偶尔出现这种情况。

这些工作并不全都一样,但它们看起来像这样:

*/1 * * * * www-data cd /home/httpd/sites/cust/cgi/ && perl /home/httpd/sites/cust/mysoft/core/bin/scheduler.pl >> /home/httpd/sites/cyst/logs/scheduler_cron.log 2>&1

如果我可以向您提供更多信息,请告诉我。

答案1

/usr/local尝试在或中为您的任务创建脚本文件/opt并使用 cron 调用这些文件。

来自退出代码,您很可能在 中创建了无效命令crontab。某些 shell 内置命令(cd、source 等)可能不可用。我更喜欢为更复杂的命令创建脚本,以便由 cron 运行。这也使它们更容易测试。

例如您发布的行:

*/1 * * * * www-data /usr/local/sample-task.sh

/usr/local/sample-task.sh内容如下:

#!/bin/bash
cd /home/httpd/sites/cust/cgi/
/usr/bin/perl /home/httpd/sites/cust/mysoft/core/bin/scheduler.pl >> /home/httpd/sites/cyst/logs/scheduler_cron.log 2>&1

别忘了跑步chmod +x /usr/local/sample-task.sh

首先手动运行它(sudo -u www-data /usr/local/sample-task.sh)以检查它是否正常工作,然后让 cron 启动它。

相关内容