在 Linux 中的Anacron服务

Anacron 是一项在每次系统重新启动后运行的服务,检查在系统关闭时运行的任何 cron 和计划作业,因此尚未运行。
它扫描 /etc/cron.hourly/anacron 文件的三个因素以确定是否运行这些错过的作业。
这三个因素是 /var/spool/anacron/cron.daily 文件的存在、自 anacron 上次运行以来经过的 24 小时时间以及系统交流电源的存在。
如果所有三个因素都是肯定的, anacron 会继续并根据定义的设置和条件自动执行位于 /etc/cron.daily 、 /etc/cron.weekly 和 /etc/cron.monthly 目录中的脚本在 anacron 的主配置文件 /etc/anacrontab.conf 中。
/etc/anacrontab 文件的默认内容如下所示:

$ cat /etc/anacrontab 
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
RANDOM_DELAY=45
START_HOURS_RANGE=3-22
#period in days   delay in minutes   job-identifier   command
1    5    cron.daily        nice run-parts /etc/cron.daily
7    25    cron.weekly        nice run-parts /etc/cron.weekly
@monthly 45    cron.monthly        nice run-parts /etc/cron.monthly

该文件定义了五个环境变量: SHELL 和 PATH 变量设置用于执行脚本的 shell 和路径(在此文件的底部定义); MAILTO 定义了用户名或者发送任何输出和错误消息的电子邮件; RANDOM_DELAY 表示以分钟为单位的最大随机延迟(添加到最后三行第二列中定义的作业的基本延迟),而 START_HOURS_RANGE 表示作业可以开始的小时数范围。

上面示例输出中的最后三行定义了计划和要执行的脚本。
第一列代表以天为单位的时间段(或者@daily、@weekly、@monthly 或者@yearly),anacron 用于检查指定的作业是否已在此天或者周期内执行,第二列指定以分钟为单位的延迟anacron 在执行作业之前等待,第三列标识作业标识符,第四列指定用于执行 /etc/cron.daily、/etc/cron.weekly 和 /etc/cron 内容的命令.monthly 文件。
这里的run-parts命令用于在默认niceness下执行三个目录位置下的所有文件。

对于每个作业, anacron 会检查该作业是否在指定的天数或者时间段(第 1 列)之前运行过,如果不是,则在等待分钟数(第 2 列)后执行该作业。
Anacron 可以在命令提示符下手动运行。
例如,要运行在 /etc/anacrontab 文件中计划但被错过的所有作业,我们可以发出以下命令:

# anacron

Anacron 将其执行日期存储在位于 /var/spool/anacron 目录中的每个定义的计划的文件中。

日期:2020-09-17 00:14:19 来源:oir作者:oir