由于某种原因,当我的备份由 启动时,它不起作用cron
。
crontab 条目
0 10 * * * /home/yzT/BackupDaily.sh
每日备份.sh
#!/bin/bash
/home/yzT/Tools/FreeFileSync/FreeFileSync /home/yzT/Tools/FreeFileSync/BackupDaily.ffs_batch
我可以看到 cron 在 中启动我的备份脚本syslog
。
Oct 20 10:00:01 debian CRON[2589]: (yzT) CMD (/home/yzT/BackupDaily.sh)
当我手动运行它时,备份系统 ( FreeFileSystem
) 在我的桌面上创建一个日志文件,我可以在备份目录中看到更新的文件。但通过cron
我没有得到日志文件也没有看到任何更新。
我怎样才能找到/解决问题?
编辑
我找到了问题的根源。切换到 TTY 并运行脚本,我收到以下消息:Error: Unable to initialize GTK+, is DISPLAY set properly?
。因此,尽管没有使用该脚本的 GUI,但该脚本似乎想要访问 GUI 应用程序。我怎样才能解决这个问题?
答案1
如果您是系统上的唯一用户,则只需编辑crontab
(使用)并在文件顶部crontab -e
添加即可。DISPLAY=:0.0
或者,您可以尝试像这样运行备份作业:
/home/yzT/Tools/FreeFileSync/FreeFileSync /home/yzT/Tools/FreeFileSync/BackupDaily.ffs_batch --display=:0.0
答案2
带有扩展名的文件.ffs_batch是与 FreeFileSync 应用程序关联的 xml 文本。因此,在 cron 中编程有两种正确的方法(crontab -e):
export DISPLAY=:0; /path_to/FreeFileSync /path_to/file.ffs_batch
或者
/path_to/FreeFileSync /path_to/file.ffs_batch --display=:0.0
错误“无法初始化 GTK +,DISPLAY 设置正确吗?”它是通过不定义谁执行任务来生成的,因此必须指定:
sudo crontab -e
# or
crontab -e
您还必须指定执行任务的小时/分钟/秒/日/周/月。例子:
0 10 * * * export DISPLAY=:0; /path_to/FreeFileSync /path_to/task.ffs_batch
# or
@weekly export DISPLAY=:0; /path_to/FreeFileSync /path_to/task.ffs_batch
来源:镜像同步
答案3
您需要在 cron 作业中使用 1-59 而不是 *
1 10 * * * /home/yzT/BackupDaily.sh