什么是 anacron,它与 cron 有何不同?
Anacron 用于定期执行命令,频率以天为单位。
与 cron 不同,它不假设机器连续运行。
因此,它可以用于不是每天 24 小时运行的机器上,以将常规作业控制为每日、每周和每月作业。
Anacron 尝试在系统正常运行时间允许的情况下尽可能接近地运行计划作业。
anacron 配置示例
让我们检查一个配置 anacron 的例子。
我们正在创建 anacron 作业来每天运行一个名为“daily_job.sh”的脚本,在系统启动后有 35 分钟的延迟。
# cat /etc/anacrontab RANDOM_DELAY=30 START_HOURS_RANGE=10-18 1 35 daily_job sh /var/tmp/daily_job.sh
如果系统正在运行,则作业将按照 /etc/anacrontab 文件中定义的 START_HOURS_RANGE 运行。
START_HOURS_RANGE 变量定义允许调度作业b 运行的小时范围。
在我们的例子中是上午 10 点。
到下午 6 点(10-18)
# grep -i START_HOURS_RANGE /etc/anacrontab START_HOURS_RANGE=10-18
RANDOM_DELAY 变量表示将添加到为每个作业指定的以分钟为单位的延迟变量的最大分钟数。
因此,将 RANDOM_DELAY 设置为 30 会随机地为该特定 anacrontab 中的每个作业增加 0 到 30 分钟的延迟时间(以分钟为单位)。
设置为 0 时,不添加随机延迟。
# grep -i RANDOM_DELAY /etc/anacrontab RANDOM_DELAY=30
anacron 配置文件
/etc/anacrontab 是 anacron 配置文件。
下面是一个未经编辑的 anacron 文件示例:
# cat /etc/anacrontab # /etc/anacrontab: configuration file for anacron # See anacron(8) and anacrontab(5) for details. SHELL=/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # the maximal random delay added to the base delay of the jobs RANDOM_DELAY=45 # the jobs will be started during the following hours only 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
其中:
period in days :以天为单位指定作业的执行频率。
该变量可以用整数或者宏(@daily、@weekly、@monthly)表示,其中@daily 表示与整数1 相同的值,@weekly 与7 相同,@monthly 指定作业运行每月一次,与月长无关。以分钟为单位的延迟:指定 anacron 在执行作业之前等待的分钟数(如有必要)。
此变量由整数表示,其中 0 表示没有延迟。作业标识符:指定日志文件中使用的作业的唯一名称。
command :指定要执行的命令。
该命令可以是诸如 ps -ef >> /tmp/processes 之类的命令,也可以是执行自定义脚本的命令。
配置文件末尾的 3 行是系统定义的 cron 作业。
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
其余变量将通过下面的示例进行解释。