- anacron は、crond とは無関係の anacrond として動作させることもできる
- Fedora 13 では、anacron は、crond によって 1時間ごとに起動される
$ cat /etc/cron.d/0hourly
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
01 * * * * root run-parts /etc/cron.hourly
$ ls /etc/cron.hourly/
0anacron
- anacron は、/etc/anacrontab の設定により、1日、7日、月次で、それぞれ /etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly 以下の実行ファイルを実行する(run-parts コマンド)ようになっている
$ 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
- で、なんで 1 日なり 7 日おきに動けるのかというと、/var/spool/anacron/${job-identifier} に最終起動時刻が記入されているから
$ sudo cat /var/spool/anacron/cron.daily
20100801
$ sudo cat /var/spool/anacron/cron.weekly
20100728
$ sudo cat /var/spool/anacron/cron.monthly
20100711
- つまり、1時間ごとに最終起動時刻から現在の経過日を調べて、指定された間隔以上経過していたら run-parts を実行するというわけ