我已设置 deja-dup 以备份到已挂载的 Truecrypt 卷中。它运行正常,但现在我想通过 Cron(为我的帐户设置)以我自己的间隔运行 deja-dup:
* * * * * env DISPLAY=:0 deja-dup --backup
(每分钟的时间表仅用于测试)
工作启动正常,但 deja-dup 输出目标不可用:
如果我尝试通过“计划任务”GUI 设置 Cron 作业并将其选择为“X 应用程序”,则它将被添加到 Cron 作业中,如下所示:
* * * * * /usr/bin/python /usr/share/gnome-schedule/xwrapper.py c 2 # JOB_ID_2
但是,当运行该作业时,它会以与我自己的 Cron 设置相同的方式失败。
如果我从终端运行任务,它就能正常启动,所以我的假设是由于某种原因,通过 cron 启动的任务没有权限访问已挂载的卷。
Q1:由于该任务是从我的用户的 Cron 设置启动的,因此应该以我的用户身份运行,为什么它不能访问已安装的卷?
Q2:失败的原因除了权限之外是否还有其他原因?
Q3:您能针对这个问题提出一些解决方案吗?
答案1
根据其他答案问题,我设法自己找到了解决方案。它包括deja-dup
从一个添加一些系统变量的脚本开始。然后 cron 作业显然会运行该脚本。
#!/bin/bash
export DISPLAY=:0
sessionfile=`find "${HOME}/.dbus/session-bus/" -type f`
export `grep "DBUS_SESSION_BUS_ADDRESS" "${sessionfile}" | sed '/^#/d'`
export `grep "DBUS_SESSION_BUS_PID" "${sessionfile}" | sed '/^#/d'`
export `grep "DBUS_SESSION_BUS_WINDOWID" "${sessionfile}" | sed '/^#/d'`
deja-dup --backup
exit 0
注意:如果有人想出了一个写得很好的答案,不仅提供了这个或其他可行的解决方案,而且还解释了问题的原因,什么是 DBUS 会话以及它在这个问题中扮演什么角色,我很乐意接受你的答案,而不是这个。