anacron 如何确定要运行的每日、每周和每月作业?
- anacron 将使用上一个作业的哪个时间来决定是否再次运行该作业:上一个作业的开始时间或完成时间?anacron 仅使用完成时间而 cron 仅涉及开始时间是否正确?
每天是否意味着正好 24 小时,或者只是不同的日历日将允许日常工作运行?
每周是否意味着正好 7 天,或者只是不同的日历周将允许每周工作运行?
每月是否意味着正好 30 天,或者只是不同的日历月将允许每月的工作运行?
时间戳文件只准确到一天,所以我猜每日问题的答案是不同的“日历”日而不是 24 小时?
$ sudo cat /var/spool/anacron/cron.daily 20181101 $ sudo cat /var/spool/anacron/cron.weekly 20181028 $ sudo cat /var/spool/anacron/cron.monthly 20181011
一些例子。假设每天早上 4 点开始运行每日作业,而 anacron 明天早上 6 点只运行一次。
如果作业在今天上午 11 点完成运行,anacron 将使用哪个时间来决定是否运行该作业:开始时间还是结束时间?
如果作业在今天凌晨 5 点完成运行,那么 anacron 会决定运行它吗?
如果作业在明天凌晨 3 点完成运行,那么 anacron 会决定运行它吗?
谢谢。
如果 anacron 在其定义的时间段内没有运行,它会运行一个作业。因此,定义为每 7 天运行的作业如果在过去 7 天内未运行,则将运行该作业。anacron 仅通过查看日历天数来计算:它加载上次运行的时间戳,计算当前的“天数”,然后减去两者。
anacron 在作业执行后更新时间戳,因此它使用完成日期作为不应再次运行相应作业的时间段的开始。cron 仅将当前日期和时间与给定的开始说明符进行比较,所以是的,它只考虑开始时间。
每日意味着最后一次运行作业必须是昨天或更早。每周意味着最后一次运行作业必须是 7 天前或更早。每月有点不同;这意味着最后一次运行作业必须是n天或更早,其中n是上个月的天数,当经过的天数恰好等于当前天数时绕过月。
鉴于你的例子: