cron設定

6系よりcronパッケージは大きく変更され、今までのvixie-cronの代替としてcronieとなっています。
基本的な設定や動作は同じように利用する事が可能ですが、デフォルト設定が変わっています。
6系よりクラウド環境が強く意識され、今までデフォルトとなっていた4時代のcronジョブ一斉起動は問題があるからです。

そのため以前はcronジョブが実行できなかった場合のバックアップとして動いていたanacronがメインとなり、
cron.d*配下に配置されているジョブは指定時間内のランダム実行になっています。

しかし運用上logrotatedの処理がランダム実行される事は困るため、
5系と同じように指定した時間で実行されるように設定を変更します。

anacronの設定

まずanacronのの実行時間を変更します。
ここでは以前と同じく5時~6時の間で実行するように変更しています。

# vi /etc/anacrontab
START_HOURS_RANGE=5-6

cronの設定

cron.dayly/*cron.weekly/*cron.monthly/*の実行時間を指定時間にします。

# vim /etc/crontab
05 0 * * * root run-parts /etc/cron.daily
25 0 * * 0 root run-parts /etc/cron.weekly
45 0 1 * * root run-parts /etc/cron.monthly

cron.houry/*については、cron.d/0hourly にて実行されています。

またcronでジョブを実行した事をanacronに伝え、anacron実行時間帯には動作しないようにします。
下記ジョブスクリプトをそれぞれ作成します。

# vi /etc/cron.daily/0anacron
#!/bin/sh
if [ ! -e /var/run/anacron.pid ]; then
    anacron -u cron.daily
fi
# vi /etc/cron.weekly/0anacron
#!/bin/sh
if [ ! -e /var/run/anacron.pid ]; then
    anacron -u cron.weekly
fi
# vi /etc/cron.monthly/0anacron
#!/bin/sh
if [ ! -e /var/run/anacron.pid ]; then
    anacron -u cron.monthly
fi

それぞれに実行権限をつける事を忘れずに。

# chmod a+x 0anacron

ジョブエラーの通知先

ジョブの標準出力情報やcronの問題が発生した場合に通知するメール通知先情報を指定します。
ここではデフォルトから変更せず、rootユーザーに通知するようにします。

# vi /etc/crontab
MAILTO="root"
# vi /etc/anacrontab
MAILTO="root"
# vi /etc/cron.d/0hourly
MAILTO="root"

ジョブのデバック用に標準出力はしたいがメール通知はしたくない場合、
下記のようにジョブを登録することで問題を回避できます。

10 0 * * * sample_job >/dev/null 2>&1

results matching ""

    No results matching ""