@monthly 45 cron.monthly nice run
-
parts /etc/cron.monthly
天
数
延
迟时间
工作名
称
定
义
实际
要
½
行的指令串
#
天
数单
位
为
天;延
迟时间单
位
为
分
钟
;工作名
称
定
义
可自定
义
,指令串
则
通常与
crontab
的
设
定相同!
[root@study ~]#
more /var/spool/anacron/*
::::::::::::::
/var/spool/anacron/cron.daily
::::::::::::::
20150731
::::::::::::::
/var/spool/anacron/cron.monthly
::::::::::::::
20150703
::::::::::::::
/var/spool/anacron/cron.weekly
::::::::::::::
20150727
#
上面
则
是三
个
工作名
称
的
时间记录
文件以及
记录
的
时间
戳
我们拿
/etc/cron.daily/
那一行的设定来说明好了。那四个字段的意义分别是:
.
天数:
anacron
执行当下与时间戳
(/var/spool/anacron/
内的时间纪录文件
)
相差的天数,若超过此天数,就
准备开始执行,若没有超过此天数,则不予执行后续的指令。
.
延迟时间:若确定超过天数导致要执行排程工作了,那么请延迟执行的时间,因为担心立即启动会有其他
资源冲突的问题吧!
.
工作名称定义:这个没啥意义,就只是会在
/var/log/cron
里头记载该项任务的名称这样!通常与后续的目
录资源名称相同即可。
.
实际要½行的指令串:有没有跟
0hourly
很像啊!没错!相同的作法啊!透过
run-parts
来处理的!
根据上面的配置文件内容,我们大概知道
anacron
的执行流程应该是这样的
(
以
cron.daily
为例
)
:
1.
由
/etc/anacrontab
分析到
cron.daily
这项工作名称的天数为
1
天;
2.
由
/var/spool/anacron/cron.daily
取出最½一次执行
anacron
的时间戳;
3.
由上个步骤与目前的时间比½,若差异天数为
1
天以上
(
含
1
天
)
,就准备½行指令;
4.
若准备½行指令,根据
/etc/anacrontab
的设定,½延迟
5
分钟
+ 3
小时
(
看
START_HOURS_RANGE
的
设定
)
;
5.
延迟时间过后,开始执行后续指令,亦即『
run-parts /etc/cron.daily
』这串指令;
6.
执行完毕后,
anacron
程序½束。
如此一来,放置在
/etc/cron.daily/
内的任务就会在一天后一定会被执行的!因为
anacron
是每个小
时被执行一次嘛!
所以,现在你知道
为什么隔了一阵子才½
CentOS
开机,开机过后约
1
小时左
右系统会有一小段时间的忙碌!而且硬盘会跑个不停!那就是因为
anacron
正在执行过去
/etc/cron.daily/, /etc/cron.weekly/, /etc/cron.monthly/
里头的未½行的各项工作排程啦!
这样对
anacron
有没有概念了呢?
^_^