【问题标题】:Crontab stopped working, crons are being called but not executedcrontab 停止工作,正在调用 crons 但未执行
【发布时间】:2016-11-26 23:55:15
【问题描述】:

几个月前它工作正常,我不记得从那以后有任何变化。 /var/log/cron 和 Logwatch 报告都表明正在调用脚本,但实际上没有执行任何操作。

  • 我正在使用 php 和 cURL 的完整路径,当我将它们插入 SSH 时,命令可以正常工作。
  • crond 服务正在运行
  • cron.deny 文件中不存在用户名,只有 'nobody' 存在。

我的 crontab:

root@server [~]# crontab -l -u my-username
SHELL="/sbin/nologin"
MAILTO=""
* * * * * /usr/local/bin/php -q /home/my-username/public_html/cron.php
*/2 * * * * /usr/bin/curl -m 240 -s http://full-path
*/3 * * * * /usr/bin/curl -m 240 -s http://full-path &>/dev/null
*/4 * * * * /usr/bin/curl http://full-path
*/5 * * * * /usr/bin/curl http://full-path
0 */12 * * * /usr/local/bin/php -q /home/my-username/public_html/path/to/script.php

日志:

root@server [~]# tail -15 /var/log/cron
Jul 23 05:18:03 de CROND[18188]: (my-username) CMD (/usr/bin/curl -m 240 -s http://full-path &>/dev/null)
Jul 23 05:18:03 de CROND[18189]: (my-username) CMD (/usr/bin/curl -m 240 -s http://full-path)
Jul 23 05:18:03 de CROND[18190]: (my-username) CMD (/usr/local/bin/php -q /home/my-username/public_html/cron.php)
Jul 23 05:19:02 de CROND[18328]: (root) CMD ((sync;echo 1 >/proc/sys/vm/drop_caches;sync) >/dev/null 2>&1)
Jul 23 05:19:02 de CROND[18327]: (my-username) CMD (/usr/local/bin/php -q /home/my-username/public_html/cron.php)
Jul 23 05:20:02 de CROND[18479]: (my-username) CMD (/usr/local/bin/php -q /home/my-username/public_html/cron.php)
Jul 23 05:20:02 de CROND[18472]: (my-username) CMD (/usr/bin/curl -m 240 -s http://full-path)
Jul 23 05:20:02 de CROND[18477]: (root) CMD ((sync;echo 1 >/proc/sys/vm/drop_caches;sync) >/dev/null 2>&1)
Jul 23 05:20:02 de CROND[18474]: (root) CMD (/usr/local/maldetect/maldet --mkpubpaths >> /dev/null 2>&1)
Jul 23 05:20:02 de CROND[18473]: (root) CMD (/usr/lib64/sa/sa1 1 1)
Jul 23 05:20:02 de CROND[18476]: (my-username) CMD (/usr/bin/curl http://full-path)
Jul 23 05:20:02 de CROND[18478]: (my-username) CMD (/usr/bin/curl http://full-path)
Jul 23 05:20:02 de CROND[18475]: (root) CMD (/usr/local/cpanel/bin/dcpumon >/dev/null 2>&1)
Jul 23 05:20:02 de CROND[18480]: (cacti) CMD (php /home/cacti/public_html/cacti/poller.php > /dev/null 2>&1)
Jul 23 05:20:02 de CROND[18481]: (root) CMD (LANG=C LC_ALL=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg --lock-file /var/lock/mrtg/mrtg_l --confcache-file /var/lib/mrtg/mrtg.ok)
root@server [~]#

我还应该检查什么? 运行 CentOS 6.7 版(最终版)

【问题讨论】:

    标签: cron centos6


    【解决方案1】:

    Cron 只是告诉您它试图运行作业,而不是退出状态。

    关于您还可以做些什么来帮助调试 cron:将 cron 的日志级别设置为 -L 15。您可以在/etc/defaults/cron 中设置它,使用EXTRA_OPTS='-L 15' 行。然后重新启动 - sudo service cron restart。您的日志现在将在错误中显示如下内容:

    Jul 23 11:45:01 localhost CRON[3565]: (CRON) error (grandchild #3566 failed with exit status 127)
    

    除此之外:

    • SHELL="/sbin/nologin" 看起来很可疑。那样有用吗?尝试删除它。
    • MAILTO 设置为您的本地邮箱MAILTO=dave(或者只是将其从空字符串中取消设置)并检查您的邮件,或者只是将脚本的输出通过管道传输到日志中,也可能有助于调试情况。李>

    【讨论】:

    • 已修复!非常感谢你的帮助。它仅在删除那条可疑线后才起作用(我不知道它的作用/含义)。 Cron 现在工作正常!我应该再次将 mailto 字符串设为空吗?还是有比向我的电子邮件发送垃圾邮件更好的日志输出?再次感谢@s-pinkus
    • 没有问题 :)。达到你想用 MAILTO 做什么。如果你的脚本输出很多垃圾,它会变得非常嘈杂,所以很多人禁用它。但它对于调试或您的脚本仅在出现问题时才输出时很有用。不过一般使用syslog 会更好。
    • 我遇到了另一个问题。 cURL 似乎正在获取页面的旧/缓存副本。该脚本通常需要大约 3 分钟才能完成,但现在 curl 会立即显示输出,这是一个古老的尝试。当我在 SSH 中执行 curl 时,这也发生在 cron 之外,但在浏览器上它运行正常。有什么建议吗?
    • 最好作为一个新问题提出。
    猜你喜欢
    • 2021-04-26
    • 2022-06-16
    • 1970-01-01
    • 1970-01-01
    • 2021-12-09
    • 1970-01-01
    • 2018-08-21
    • 2019-08-05
    • 1970-01-01
    相关资源
    最近更新 更多