我有几个脚本,我计划在 cron 中运行一段时间。大约一周前,根据(非常基本的)日志显示,它们停止运行,而且我还注意到我的壁纸不再旋转。
josh@sirius:~$ crontab -l
# m h dom mon dow command
0 * * * * /bin/bash /home/josh/bin/rotate-wallpaper
*/30 * * * * /bin/bash /home/josh/bin/download-programmes
* * * * * echo "I ran" > /home/josh/cronstamp
前两个命令均未运行,但~/cronstamp
文件确实按预期创建并写入。
答案1
看起来你的脚本失败了。我建议2>&1 > /home/josh/cronlog
在命令末尾添加,这样你以后就可以检查出了什么问题
例子:
# m h dom mon dow command
0 * * * * /bin/bash /home/josh/bin/rotate-wallpaper 2>&1 > /home/josh/cronlog
*/30 * * * * /bin/bash /home/josh/bin/download-programmes 2>&1 > /home/josh/cronlog
答案2
尝试重新加载 cron 作业:
sudo service reload
可用选项有:
sudo service {start|stop|status|try-restart|restart|force-reload|reload|probe}
答案3
您的脚本是否依赖于 GUI 元素(我想是的,因为您谈到了壁纸)?那么我猜这行不通,因为它错过了 Cron 中的一些环境变量,而不是在终端窗口中运行。
如果您只是需要$DISPLAY
并且没有运行多个 X-windows,请在脚本中像这样设置(在顶部):
DISPLAY=:0
可能还有更多缺失。请尝试进一步调试并记录脚本中所有命令的所有输出,如@zakkak 所解释的那样stdout
。stderr