我遇到了一个 cron 任务启动但无法完成的问题。手动运行命令可以正常工作。我已经阅读了关于 cron 问题和解决方案的页面在 AskUbuntu 上,我尝试了所提出的解决方案,但没有找到适合我的情况的答案。
我正在使用 Ubuntu 12.04。
$ crontab -e
SHELL=/bin/bash # otherwise it would be /bin/sh
59 16 * * * /bin/duply calendar backup > /tmp/duply.log
顺便说一句,正如有人指出的那样,cron 文件以空行结尾。
一旦工作“完成”……:
$ cat /tmp/duply.log
Start duply v1.5.7, time is 2012-06-22 16:59:01.
相反,手动运行脚本可以正常工作并提供以下输出:
Start duply v1.5.7, time is 2012-06-22 17:06:39.
[cut]
... here is a long output generated by duply.
... and yes, files have been backed up.
[cut]
--- Finished state OK at 17:06:42.581 - Runtime 00:00:03.170 ---
我也尝试重新启动 cron 守护进程(sudo service cron restart
),但没有任何变化。
您对解决此问题有什么建议吗?
答案1
因此,根据评论,以下是我自己问题的答案。
错误日志
一个有用(必要)的第一步是获取错误日志。
获取它的语法是:
/bin/duply calendar backup > /tmp/duply.log 2> /tmp/duply.error.log
原因
幸运的是,日志文件指出了原因:
duplicity 缺失。已安装且在路径中可用?
因此,我将与 shell 会话中相同的值添加到 cron 文件中PATH
,问题就消失了。我认为不需要将其添加PATH
到 crontab 文件中,因为PATH
cron 作业期间是/usr/bin:/bin
,并且重复驻留在 中/bin
。
现在 crontab 文件以以下内容开头:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games