如何取消延迟一定时间的 anacron 作业?

如何取消延迟一定时间的 anacron 作业?

背景:我每天想要备份笔记本电脑上的一些文件,有时笔记本电脑会连续关闭几天。

我尝试将备份安排为一项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 anacronman 5 anacrontab更多细节。

答案2

通过这种方式,您可以做的最好的事情就是在备份启动时创建锁定文件,并在脚本结束时将其删除。当然,在创建之前,您应该检查锁定文件是否存在,如果存在,则停止脚本。请小心检查脚本何时被外部方终止并且锁定文件仍然存在。

相关内容