UM-Li Asked: 2019-01-08 22:15:12 +0800 CST2019-01-08 22:15:12 +0800 CST 2019-01-08 22:15:12 +0800 CST 如何取消延迟一定时间的 anacron 作业? 772 背景:我想每天在我的笔记本电脑上备份一些文件,有时会连续几天关闭笔记本电脑。 我尝试将备份安排为cron作业并anacron用于执行错过的作业,但不确定其工作方式anacron。 例如,如果我在关闭 3 天后启动笔记本电脑,是否会anacron执行所有 3 个错过的备份作业?如果这是真的,停止anacron执行延迟一定时间(在这种情况下> 1 天)的作业的最佳方法是什么? cron anacron 2 个回答 Voted Best Answer Haxiel 2019-01-09T02:50:36+08:002019-01-09T02:50:36+08:00 如果您有一项anacron运行每日备份的作业,并且您的系统停机了三天,则将在第四天系统上线时运行一次anacron该作业。 详细地说,anacron允许您指定以天为单位的频率定期重复的命令。当anacron被调用时(可能在启动时发生,也可能在一天中的预定义时间发生),它将从/etc/anacrontab配置文件中读取作业列表。对于每个作业,anacron检查该作业是否在最近 n 天内已执行。对于日常工作,这将是最后 1 天,即今天。如果该作业在此期间没有运行,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了解更多详细信息。 Romeo Ninov 2019-01-08T23:41:42+08:002019-01-08T23:41:42+08:00 这样,您可以做的最好的事情是在备份开始时创建锁定文件并在脚本结束时将其删除。当然,在创建之前,您应该检查锁定文件是否存在,如果存在则停止脚本。小心检查脚本何时被外部方杀死并且锁定文件仍然存在。
如果您有一项
anacron
运行每日备份的作业,并且您的系统停机了三天,则将在第四天系统上线时运行一次anacron
该作业。详细地说,
anacron
允许您指定以天为单位的频率定期重复的命令。当anacron
被调用时(可能在启动时发生,也可能在一天中的预定义时间发生),它将从/etc/anacrontab
配置文件中读取作业列表。对于每个作业,anacron
检查该作业是否在最近 n 天内已执行。对于日常工作,这将是最后 1 天,即今天。如果该作业在此期间没有运行,anacron 将执行该作业。作业运行完成后,
anacron
将执行日期记录在文件中,位于/var/spool/anacron
. 该文件用于在第二天调用 anacron 时检查作业的状态。由于
anacron
只查看自上次执行以来经过的天数和配置的执行频率,因此不存在多次执行作业的问题。/etc/anacrontab
可以使用以下语法在配置文件中设置每日 anacron 作业:1 是以天为单位指定的命令执行频率,15 是以分钟为单位添加到作业执行的延迟,'backup-job' 是一个标识符,'/path/to/backup/script.sh' 是要执行的命令。您可以查看
man 8 anacron
并man 5 anacrontab
了解更多详细信息。这样,您可以做的最好的事情是在备份开始时创建锁定文件并在脚本结束时将其删除。当然,在创建之前,您应该检查锁定文件是否存在,如果存在则停止脚本。小心检查脚本何时被外部方杀死并且锁定文件仍然存在。