我有以下crontab文件,其中第一个wget命令可以工作但另一个不能。两个网址上的代码完全相同,只有一个位于我的开发域,另一个是生产域。
SHELL=/bin/sh PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin
MAILTO=me@mydomain.com
#
# check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly
#
-*/15 * * * * root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons /dev/null 2>&1
* * * * * /usr/bin/wget -O /dev/null -q http://dev.mydomain.com/cron/cron.php #Works fine
* * * * * /usr/bin/wget -O /dev/null -q http://live.mydomain.com/cron/cron.php #Does not work
我已经尝试过评论工作命令,以防它不喜欢一起运行2,但这并没有区别。
我已经检查过“实时”网址在浏览器中运行时是否有效。
我从crontab或apache日志中都没有错误。
没有任何反应。
我重新启动了cron守护程序,甚至重新启动了服务器。
有没有人经历过这样的事情?
修改 好的,我在代码中添加了记录错误,现在它可以正常工作:
SHELL=/bin/sh PATH=/usr/bin:/usr/sbin:/sbin:/bin:/usr/lib/news/bin
MAILTO=me@mydomain.com
#
# check scripts in cron.hourly, cron.daily, cron.weekly, and cron.monthly
#
-*/15 * * * * root test -x /usr/lib/cron/run-crons && /usr/lib/cron/run-crons /dev/null 2>&1
* * * * * /usr/bin/wget -O /dev/null -q http://dev.mydomain.com/cron/cron.php >> /srv/www/dev/cron/CRONdev_LOG.txt 2> /dev/null
* * * * * /usr/bin/wget -O /dev/null -q http://live.mydomain.com/cron/cron.php >> /srv/www/live/cron/CRONlive_LOG.txt 2> /dev/null
虽然我很高兴它现在有效,我仍然希望有人解释原因!
答案 0 :(得分:1)
好的,我终于明白了这一点,这真的很容易,但我会在这里向任何像我这样可能有过挣扎的人保留这个问题。
crontab文件末尾最初没有换行符,因此最后一个命令没有运行。当我编辑它并添加错误检查时,我在没有意识到的情况下添加了换行符,从而使其工作。
经过一番谷歌搜索后,我在一些地方发现了这一点,但它似乎并不太常见。
此外,由于它没有引起任何错误,因此很难发现。