Cron設定
OSのジョブ管理サービスは cron と anacron で管理されている
cron が定義されたジョブ記述を読み実行するのに対し、
anacron は定義されたジョブの他に cron の実行ジョブ状況を監視し、実行漏れやリマインドとしての挙動を行う
従来は cron がメインジョブ管理サービスとして動き、 anacron がバックアップ的な役割だったが
システムジョブは anacron が管理し、ユーザージョブなど正確に時刻実行する必要があるジョブを cron が管理するように役割が分かれた
anacronの設定
anacron はジョブに対して「指定時刻の範囲内で実行する」ように定義する
システムジョブが anacron で実行管理されるようになったため、
ログローテートジョブがデフォルトではいつローテートされるかわからず管理が難しくなっている
そのため本手順では anacron の設定を従来どおりバックアップ的な挙動をするように変更する
まずanacronのの実行時間を変更します。
ここでは従来と同じく5時~6時の間で実行するように変更しています。
# vi /etc/anacrontab
START_HOURS_RANGE=5-6
cronの設定
従来どおりの cron 、 anacron の挙動をするよう設定を行う
システムジョブ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 実行時間帯には動作しないようにする
下記ジョブスクリプトをそれぞれ作成
- daily
# vi /etc/cron.daily/0anacron
#!/bin/sh
if [ ! -e /var/run/anacron.pid ]; then
anacron -u cron.daily
fi
- weekly
# vi /etc/cron.weekly/0anacron
#!/bin/sh
if [ ! -e /var/run/anacron.pid ]; then
anacron -u cron.weekly
fi
- monthly
# vi /etc/cron.monthly/0anacron
#!/bin/sh
if [ ! -e /var/run/anacron.pid ]; then
anacron -u cron.monthly
fi
- 実行権限の付与
# chmod 755 cron.daily/0anacron
# chmod 755 cron.weekly/0anacron
# chmod 755 cron.monthly/0anacron
ジョブエラーの通知先
ジョブの標準出力情報やcronの問題が発生した場合に通知するメール通知先情報を指定します
# vi /etc/crontab
MAILTO="root"
# vi /etc/anacrontab
MAILTO="root"
# vi /etc/cron.d/0hourly
MAILTO="root"
ジョブ毎に通知先を分けたい場合は実行ジョブの直前にMAILTO
を定義することで以降のジョブに設定される
また cron はジョブ実行結果に標準出力があると内容をメールに送信しようとするため、
ジョブのデバック用に標準出力はしたいがメール通知はしたくない場合は標準出力を破棄するようにジョブ末尾に定義する
例)
10 0 * * * sample_job >/dev/null 2>&1