crontab 停止工作,正在调用 crons 但未执行
Crontab stopped working, crons are being called but not executed
几个月前它工作正常,我不记得从那以后有什么变化。 /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 只是告诉你它试图 运行 作业,而不是退出状态。
关于您还可以做些什么来帮助调试 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
(或只是将其从空字符串中取消设置)并检查您的邮件,或者只是将脚本的输出通过管道传输到日志中,也可能会有所帮助调试情况。
几个月前它工作正常,我不记得从那以后有什么变化。 /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 只是告诉你它试图 运行 作业,而不是退出状态。
关于您还可以做些什么来帮助调试 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
(或只是将其从空字符串中取消设置)并检查您的邮件,或者只是将脚本的输出通过管道传输到日志中,也可能会有所帮助调试情况。