Cron没有在12.0.4上运行,但在12.0.5上运行

时间:2014-11-28 03:38:49

标签: php linux bash ubuntu cron

我有一台正确触发cron作业的服务器。这是该服务器上的信息:

Ubuntu 12.04.5 LTS(GNU / Linux 3.13.0-32-generic x86_64)

crontab -l

* * * * * ( sleep 15 ; sudo /var/crons/NextQueueItemParallel.sh ) * * * * * ( sleep 45 ; sudo /var/crons/NextQueueItemParallel.sh )

未触发crons的服务器:

Ubuntu 12.04.4 LTS(GNU / Linux 3.16.5-x86_64-linode46 x86_64)

crontab -l

* * * * * ( sleep 30 ; sudo /var/crons/ParseLogs.sh )

我手动运行脚本,它可以工作。我验证了路径是否正确,并输入此调试代码以查看它是否被调用:

echo 1 >> /var/crons/test php /var/www/crons/ParseLogFiles.php

我手动运行,并在测试结束时附加1,但不会单独出现。我已经安装了正确的cron和anacron服务,并尝试了这里列出的解决方案:

php cron job not running | http://growingventuresolutions.com/blog/ubuntu-cron-isn-t-running-some-things-check.html | Cron Job Doesn't Run

编辑1:

我通过发布sudo crontab -e更新了当前无法正常工作的计算机上的crontab,现在存在以下行(我通过关闭并重新打开来验证):

* * * * * ( sleep 30 ; /var/crons/ParseLogs.sh )(后面跟着一两行新品)

该文件由以下内容组成:

echo 1 >> /var/crons/test php /var/www/crons/ParseLogFiles.php

我tail / var / crons / test(tail -f /var/crons/test)但是没有看到任何附加内容并且脚本没有运行。当我手动运行这两个(通过复制行)时,它确实运行。

编辑2:

我没有执行权限,这就是为什么它在我手动运行但不在cron上运行的原因。我发出了以下命令chmod +x /var/crons/ParseLogs.sh,它立即开始工作。如果你正在查看这个并且其他一切似乎都有效,请检查一下!感谢所有帮助过的人!

2 个答案:

答案 0 :(得分:1)

我的猜测是其中一台服务器启用了requiretty的{​​{1}}配置选项。

假设Ubuntu使用与Debian上游相同的设置,请检查sudo/etc/sudoers目录中的文件,例如:

/etc/sudoers.d/

如果找到,请将其删除。

如果您控制服务器,另一个选项可能是将cron任务移动到root用户的crontab或/etc/cron.d目录中(此目录中的文件格式指定要运行的用户)< / p>

答案 1 :(得分:0)

我必须chmod +x /var/crons/ParseLogs.sh才能让crontab执行它。由于我的云提供商以root身份创建了默认帐户,因此手动运行显然绕过了此限制。