最近几周,我在我的 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、2、25 或 255)。
- 我该怎么做才能进一步测试?以前有人见过这种情况吗?
注意:是的,我已经在谷歌上搜索过这个问题,但没有找到适合我的情况的解决方案。
其中一些 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 启动它。