ジョブ管理ツール
#
タスクツールの概要Red Hat Enterprise Linux は、cron、anacron、at、 batch といった自動化タスクユーティリティを備えています。
Cron は、最高で 1 分おきの頻度でジョブの実行が可能です。しかし、ユーティリティはシステムが継続的に稼働状態であることを前提としており、ジョブがスケジュールされている時にシステムが稼働していない場合は、ジョブは実行されません。
Anacron は、ジョブがスケジュールされている時点でシステムが稼働していなくても、ジョブを記憶しています。そして、次回にシステムが立ち上がった時にジョブを実行します。しかし、Anacron は1日に1回しかジョブを実行できません。
#
anacronの設定anacron はジョブに対して「指定時刻の範囲内で実行する」ように定義する
例えば下記のように anacrontab ジョブが定義されていた場合
ファイル内で定義されているジョブはすべて、ランダムに 6 分から 45 分の間で遅延することになり、3:00 時から 22:00 時の間に実行できます。
最初に定義してあるジョブは days
の値が 5
となっているため 3:11 時から 22:00 時の間に実行されます
このジョブに指定されているコマンドは、run-parts スクリプトを使って /etc/cron.daily
ディレクトリ内にあるすべての現行プログラムを実行します
デフォルトではシステムで定期実行(日次、週次、月次)されるジョブは anacrontab でジョブ実行、管理されている
その場合ログローテート処理等も ランダムな時間で実行されるようになってしまうため、ジョブ管理上問題が発生する
そのため本手順では anacron の設定を従来どおり cron でのジョブ管理をメインとし、cron ジョブがシステム停止等で実行されなかった場合に anacron 経由で実行を試みる構成に戻す
#
anacron遅延実行時間範囲の変更anacronをcronのバクアップジョブ実行機能として利用するため、再ジョブ実行の範囲を限定する
#
メール通知先の指定ジョブエラー時のメール通知先
#
cronの設定#
crontabの設定システムジョブをcronで実行するように cron.dayly/*
、cron.weekly/*
、cron.monthly/*
の実行時間を指定
cron.houry/*
については、 cron.d/0hourly
にて実行される
#
anacron連携用システムジョブの用意 cron でジョブを実行した事を anacron に伝え、 anacron 実行時間帯には動作しないようにする
下記ジョブスクリプトをそれぞれ作成
- daily
- weekly
- monthly
#
ジョブエラーの通知先ジョブエラー時のメール通知先
ジョブ毎に通知先を分けたい場合は実行ジョブの直前に MAILTO=
を定義することで以降のジョブに設定される
また cron はジョブ実行結果に標準出力があると内容をメールに送信しようとするため、
ジョブのデバック用に標準出力はしたいがメール通知はしたくない場合は標準出力を破棄するようにジョブ末尾に定義する