背景:我每天想要备份笔记本电脑上的一些文件,有时笔记本电脑会连续关闭几天。
我尝试将备份安排为一项cron
作业并用于anacron
执行错过的作业,但不确定其anacron
工作方式。
例如,如果我在关闭 3 天后启动笔记本电脑,是否会anacron
执行所有 3 个错过的备份作业?如果这是真的,anacron
那么停止执行延迟一定时间(在本例中> 1天)的作业的最佳方法是什么?
答案1
如果您有一项anacron
运行每日备份的作业,并且您的系统停机了三天,anacron
则将运行该作业一次第四天系统上线时。
详细地说,anacron
允许您指定以天为单位指定频率定期重复的命令。当anacron
被调用时(可以在启动时发生,也可以在一天中的预定义时间内发生),它将从配置文件中读取作业列表/etc/anacrontab
。对于每个作业,anacron
检查该作业是否在过去 n 天内执行过。对于日常工作,这将是最后一天,即今天。如果该作业在此期间尚未运行,anacron 就会执行该作业。
作业运行完成后,anacron
将执行日期记录在 下的文件中/var/spool/anacron
。该文件用于在第二天调用 anacron 时检查作业的状态。
由于anacron
只查看自上次执行以来经过的天数和配置的执行频率,因此不存在作业被执行多次的问题。
/etc/anacrontab
可以使用以下语法在配置文件中设置每日 anacron 作业:
1 15 backup-job /path/to/backup/script.sh
1 是以天为单位执行指定命令的频率,15 是以分钟为单位添加到作业执行中的延迟,“backup-job”是标识符,“/path/to/backup/script.sh”是要执行的命令。你可以看一下man 8 anacron
和man 5 anacrontab
更多细节。
答案2
通过这种方式,您可以做的最好的事情就是在备份启动时创建锁定文件,并在脚本结束时将其删除。当然,在创建之前,您应该检查锁定文件是否存在,如果存在,则停止脚本。请小心检查脚本何时被外部方终止并且锁定文件仍然存在。