アクセスログをローテーションさせるため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について調べたおかげですっきりしました。