Answers:
两者cron
并anacron
是守护程序,它可安排周期性任务在某一个时间点由用户定义的执行。
cron
和之间的主要区别在于,anacron
前者假定系统正在连续运行。如果系统关闭并且在此期间安排了作业,则该作业将永远不会执行。
另一方面,它anacron
是“过时的”,是为未运行24x7的系统而设计的。为了使其工作,请anacron
使用带有时间戳的文件来查找上次执行命令的时间。它也/etc/anacrontab
像维护文件一样维护文件cron
。此外,cron.daily
每天都要运行蟒蛇。因此,anacron
一天只能运行一次作业,但cron
每分钟可以运行一次。
来自man anacrontab
:
执行后,Anacron将从配置文件(通常为/ etc / anacrontab)中读取作业列表(请参阅anacrontab(5))。该文件包含Anacron控制的作业列表。每个作业条目以天为单位指定时间段,以分钟为单位指定延迟时间,唯一的作业标识符和shell命令。
对于每个作业,Anacron都会检查该作业是否在最近n天内执行过,其中n是为该作业指定的时间段。如果不是,则在等待指定为delay参数的分钟数后,Anacron运行作业的shell命令。
命令退出后,Anacron将日期记录在该作业的特殊时间戳文件中,因此它可以知道何时再次执行该日期。仅将日期用于时间计算。不使用小时。
这意味着,如果计划将任务每天运行一次,并且在此期间计算机已关闭,则在运行anacron时,它可以看到该任务的最后一次运行时间超过24小时,并且可以正确执行任务。
例如,如果您在中指定以下内容/etc/anacrontab
:
7 15 test.daily /bin/sh /home/username/script.sh
并且在script.sh
应该执行作业的当天(如果系统未运行)anacron
将script.sh
在系统重新启动后的15分钟内执行。
很少参考:
anacron
从所有VPS上移除了,因为它们始终处于开机状态。(不知道它是如何到达那里的,我没有听说过。)我的crontab
输入(每天,每周,...)现在都在预期的时间运行。