CDN・WEB高速化ブログ

CentOSのcron実行時刻をcentos5以前と同様にジャストタイムにする方法

指定した時間ピッタリにCronが実行されるにはどうしたら良いかを簡単に解説します。

RHEL6 (Scientific Linux 6 や CentOS 6 も同様) から、デフォルトでは「cronie-anacron」というパッケージがインストールされ、 ジョブの定期実行は anacron で制御されるように変更されました。そのため、Centos5の時のcron のように決まりきった時間にジョブが一斉に実行されるわけではなく、 設定された時間内(3時-22時)に、ランダムに設定された時間分(0分-45分)待って実行されるように変更されています。

Crontabの記載

Centos6系以降

—————————————————————————————————-

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# For details see man 4 crontabs

# Example of job definition:
# .—————- minute (0 – 59)
# |  .————- hour (0 – 23)
# |  |  .———- day of month (1 – 31)
# |  |  |  .——- month (1 – 12) OR jan,feb,mar,apr …
# |  |  |  |  .—- day of week (0 – 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

—————————————————————————————————-

Centos5系以前

—————————————————————————————————-

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

—————————————————————————————————-

ランダムに実行する設定は、anacron (cronie-anacron) により行われており、設定内容は /etc/anacrontab に記載されています。

ファイルの中身

—————————————————————————————————-

—————————————————————————————————-

仮想マシンなどの運用を想定して負荷を分散するためだとおもいますが、決められた時刻にCRONを実行したい場合もあるかとおもいます。

cronie-noanacronパッケージのインストール+cronie-anacron削除

※パッケージの依存関係のため、事前に cronie-noanacron をインストールし、その後に cronie-anacron を削除するという順番で行います。

インストール後Cron の時刻設定については /etc/cron.d/dailyjobs にあるファイルを編集します。

設定ファイルを編集する

 

—————————————————————————————————-

—————————————————————————————————-

※0anacron の存在チェックが行われており、cronie-anacron パッケージを削除しないと有効化されないようになっています。

こちらのファイルを編集することにより、従来と同様ジャストタイムにCRONを実行する事が出来ます。

[/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]
2013 8月 10th,|Linux|