15.4
可唤醒停机期间的工作任务
想象一个环境,你的
Linux
服务器有一个工作是需要在每周的星期天凌晨
2
点½行,但是很不巧的,
星期六停电了~所以你得要星期一才能½公司去启动服务器。
那么请问,这个星期天的工作排程还
要不要½行?因为你开机的时候已经是星期一,所以星期天的工作当然不会被½行,对吧!
问题是,若是该工作非常重要
(
例如例行备份
)
,
所以其实妳还是希望在下个星期天之前的某天还是
½行一下比½好~那你该怎办?自己手动执行?如果你跟鸟哥一样是个记忆力超差的家伙,那么肯定
『记不起来某个重要工作要½行』的啦!
这时候就得要靠
anacron
这个指令的功能了!这家伙可以
主动帮你½行时间到了但却没有执行的排程喔!
15.4.1
什么是
anacron
anacron
并不是用来取代
crontab
的,
anacron
存在的目的就在于我们上头提到的,在处理非
24
小
时一直启动的
Linux
系统的
crontab
的执行!
以及因为某些原因导致的超过时间而没有被执行的排
程工作。
其实
anacron
也是每个小时被
crond
执行一次,然后
anacron
再去检测相关的排程任务有没有被执
行,如果有超过期限的工作在,
就执行该排程任务,执行完毕或无须执行任何排程时,
anacron
就
停止了。
由于
anacron
预设会以一天、七天、一个月为期去侦测系统未½行的
crontab
任务,因此对于某些
特殊的使用环境非常有帮助。
举例来说,如果你的
Linux
主机是放在公司给同仁使用的,因为周末
假日大家都不在所以也没有必要开启,
因此你的
Linux
是周末都会关机两天的。但是
crontab
大多
在每天的凌晨以及周日的早上½行各项任务,
偏偏你又关机了,此时系统很多
crontab
的任务就无
法½行。
anacron
刚好可以½决这个问题!
那么
anacron
又是怎么知道我们的系统啥时关机的呢?这就得要使用
anacron
读取的时间记录文件
(timestamps)
了!
anacron
会去分析现在的时间与时间记录文件所记载的上次执行
anacron
的时间,
两者比½后若发现有差异,
那就是在某些时刻没有½行
crontab
啰!此时
anacron
就会开始执行未
½行的
crontab
任务了!
15.4.2 anacron
与
/etc/anacrontab
anacron
其实是一支程序并非一个服务!这支程序在
CentOS
当中已经½入
crontab
的排程喔!同时
anacron
会每个小时被主动执行一次喔!
咦!每个小时?所以
anacron
的配置文件应该放置在
/etc/cron.hourly
吗?嘿嘿!您真内行~赶½来瞧一瞧:
[root@study ~]#
cat /etc/cron.hourly/0anacron
#!/bin/sh
# Check whether 0anacron was run today already
if test
-
r /var/spool/anacron/cron.daily; then
day=`cat /var/spool/anacron/cron.daily`