为什么将 duply 设置为 cron 作业后不起作用?

为什么将 duply 设置为 cron 作业后不起作用?

我遇到了一个 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 文件中,因为PATHcron 作业期间是/usr/bin:/bin,并且重复驻留在 中/bin

现在 crontab 文件以以下内容开头:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin‌​:/bin:/usr/games

相关内容