cronとanacronについて

アクセスログをローテーションさせるためcronをインストールすることにした。

どんなパッケージがあるか検索

# yum search cron

PackageKit-cron.x86_64 : Cron job and related utilities for PackageKit
cronie.x86_64 : Cron daemon for executing programs at set times
cronie-noanacron.x86_64 : Utility for running simple regular jobs in old cron style
crontabs.noarch : Root crontab files used to schedule the execution of programs
yum-cron.noarch : Files needed to run yum updates as a cron job
cronie-anacron.x86_64 : Utility for running regular jobs
rpm-cron.noarch : Create daily logs of installed packages.

ここにanacronとあるがcron(上記ではnoanacron)との違いがわからなかったので調べてみた。
cronは定期的にジョブを実行する機能でデーモンのcrondとスケジューリングのcrontabから構成されている。
anacronはサーバメンテナンス等で crondが実行されなかったときにサーバ起動後にジョブを遅延実行させるものだが、最新のRHEL6ではまた動きが違うらしい。
試しにCentOS6.2にcronとanacronをインストールして設定ファイルを確認したところ、/etc/crontabの設定から/etc/cron.*ディレクトリの指定がなくなり、/etc/anacrontabの設定に/etc/cron.{daily|weekly|monthly}の遅延時間とランダム時間が指定されている。この結果/etc/cron.{daily|weekly|monthly}に置かれたスクリプトファイルはいつ実行されるのかわからない。
このような設定になった理由は仮想環境で同一ホスト上の複数の仮想マシンが同一時間帯にジョブを実行することを避けるためのようです。

anacronについては以下で詳細に説明されており、参考にさせていただきました。
http://aikotobaha.blogspot.com/2011/02/rhel6-7cronanacron.html

なので/etc/cron.hourlyだけでなく/etc/cron.{daily|weekly|monthly}に置いたスクリプトファイルの実行も日時を指定する場合はcronで指定する必要があるようです。

cronをインストール。

# yum -y install cronie-noanacron.x86_64

依存関係のある以下のパッケージも同時にインストールされます。

cronie.x86_64
crontabs.noarch

anacronは必要ないかなと思いましたが動きを確認したいので、anacronもインストール。

# yum -y install cronie-anacron.x86_64

CentOS6になってcronがどうも意図したとおりに実行されない気がしてましたが、今回cronとanacronについて調べたおかげですっきりしました。