CentOS 7でジョブ(スクリプト)を定期的に実行する時に利用されるのが「anacron」です。CentOS 5までは「cron」でしたが、CentOS 6以降からは「anacron」が採用されています。
ここでは、「cron」と「anacron」の違いや、CentOS 7でジョブを設定するポイントについて紹介します。
目次
動作環境
この記事は、以下の環境での動作結果を基にしています。他のディストリビューションやバージョンでは、動作結果が異なる場合があることをご了承ください。
ソフトウェア | バージョン |
---|---|
CentOS Linux | 7.4.1708 |
cronとanacronの違い
「cron」と「anacron」の一番の違いは、実行タイミングです。
/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly以下あるジョブ(スクリプト)は、「cron」では指定した日時に実行されますが、「anacron」では、指定した実行可能範囲の間で実行されるようになります。つまり、いつ実行されるかは大まかな範囲でしか分からなくなります。それはそれでメリットがあるようですが・・・
そのほかの違いは以下のとおりです。
cronの特徴
- 「etc/crontab」「/etc/cron.d/以下のファイル」「各ユーザのcrontabファイル」など、複数のジョブ設定場所がある
- デーモンプロセス(crond)が常駐して指定日時にジョプを起動する
- 曜日・時・分・秒の粒度で、指定日時にジョブを実行する
- 指定日時にサーバが停止していた場合など、実行できなかったジョブを再実行する機能はない(次回の実行日時まで待つ必要がある)
anacronの特徴
- ジョブの設定場所は「/etc/anacrontab」のみで、rootユーザー以外はジョブの設定ができない
- デーモンプロセスは存在せず、定期的にanacronコマンドを実行する仕組みを別途用意 する必要がある
- ジョブの実行間隔を1日単位で指定する(1日1回以上の実行頻度は指定できず、ジョブの実行時刻を明示的に指定することもできない)
- 長期間サーバが停止していた場合,サーバ起動後に必要なジョブをすぐに実行できる
CentOS 7でジョブを設定するポイント
まずは、「/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly以下あるジョブ(スクリプト)の実行時刻は、大まかにしかわからないと考えておきます。
明示的に実行タイミングを指定したい場合は、「etc/crontab」「/etc/cron.d/以下のファイル」「各ユーザのcrontabファイル」で指定するようにします。
cronに戻したいときは
「/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly以下あるジョブ(スクリプト)の実行タイミングを明示的に指定したい場合は、cronを使う必要があります。
cronを使うには「cronie-noanacron」をインストールし、その後「cronie-anacron」を削除します。
# yum -y install cronie-noanacron
# yum -y remove cronie-anacron
あとがき
小規模なLinuxサーバー環境だと、/etc/crontabに指定する方法だけで良い気が・・します。