我想每天晚上 8:10 运行一个 cron 作业。
10 20 * * * curl -s -o /dev/null http://www.example.com/blah.php
然而,它不起作用。
如果我尝试每分钟运行一次:
* * * * * curl -s -o /dev/null http://www.example.com/blah.php
一切运行正常。发生了什么?
命令“date”在我的服务器上产生了正确的时间。
答案1
在 /etc/default/rcS 中将 UTC 从“是”更改为“否”。现在可行。
答案2
这个答案帮助我解决了同样的情况。重新启动 cron 服务帮助我的服务器的 cron 服务识别我对系统日期所做的更改。
https://stackoverflow.com/questions/34626135/crontab-linux-not-running-at-specific-time
sudo service rsyslog restart
sudo service cron restart or sudo service crond restart
答案3
以上方法应该可以正常工作。以下是您可以尝试的方法:
- 尝试不同的时间 - 例如将其设置为 5 分钟后运行,看看是否有效
- 尝试其他用户
- 或者不同的 crontab(
/etc/crontab
或其他用户的 crontab)
- 或者不同的 crontab(
- 尝试更简单的命令(例如
echo works > /tmp/cron-works
)- 您也可以将上述内容添加到您的 curl 中(例如
echo works > /tmp/curl-works; curl ...
)或类似这样的内容 - 同时添加另一个 cron 条目也是不错的选择,它可以发出 echo 指令,并保持 curl 不变
- 您也可以将上述内容添加到您的 curl 中(例如
- 检查日志 -
/var/log/syslog
应该显示它正在执行命令以及可能出现的故障 - 确认你的 curl 确实运行了 - 你如何知道它是否运行了?我假设你正在查看日志
www.example.com
- 如果是的话,请仔细检查日志 - 尝试特殊值,例如
@houry
(请参阅man 5 crontab
完整列表)
另外,你是如何进行身份验证的?如果是网络身份验证,你可能需要确认它是否正常工作前任何 crontab 执行。
答案4
只需重新启动 cron 服务。
$ sudo service cron restart