今回「RHEL6におけるジョブスケジューラ "anacron"」についてご紹介致します。
RHEL5まではcronでの実行がメインだったOS デフォルトジョブも、
RHEL6からほとんどが anacron に切り替わっております。
ただ、従来のシステムで多用されてきたcronと比べ、
anacron はまだ馴染み深くない方もいらっしゃるかもしれません。
そこで、今一度、anacronとcronで混在してしまう点を整理し、2回に分けてご紹介致します。
今回のパート1では、
・cronとanacronの違い |
※anacronはRHEL7でも実装予定ですが仕様未確認のため本記事の対象外となります。
cronとともにRHELで標準実装されている、ジョブ(コマンドやプログラム等)を
スケジュール実行する仕組みです。
(Windowsでいうタスクスケジューラのようなものです)
RHELではcron、anacronともに利用可能なわけですが、
従来利用されているcronと、今回ご紹介するanacronの大きな違いの1つは
「ジョブ実行時刻の指定」にあります。
●cronは、「ジョブ実行時刻を指定可能です。」
逆に言うと、指定した時刻以外には絶対に起動しません。
一方
●anacronは、「正確なジョブ実行時刻を指定できません。」
実行時間帯(例:3時~22時)は指定できますが、
実行時刻はその時間帯の中でOS側でスケジューリングします。
[table id=27 /]
![]() [脱線] なぜanacronのような曖昧なスケジューリングの仕組みが必要なのでしょうか。 共有ハードウェア上に、複数仮想OSを動かすのがスタンダードな今、 だからといって、OS毎にジョブ時刻を変える設計もサーバ数増加時は管理が大変です。 |
ジョブ実行タイミングの自動分散を必要としない場合、
従来どおり cron を使って問題ないと考えます。
ジョブ実行タイミングの自動分散を必要とする場合についても、
柔軟に細かいスケジュール条件が指定可能な cron に対し、
anacron は不向きとなる条件は数多くありますのでご注意ください。
anacronに不向きなジョブ
●1日に複数回起動が必要 ●正確な時刻指定が必要 ●ジョブ間で実行順序に前後関係がある ●システム管理ユーザ以外がスケジュール登録利用する |
ではanacronはどのようにプロセス起動しスケジュール実行しているのでしょうか。
実はanacronは、cronから1時間に1回プロセス起動されています。
▼スケジュール実行フローをイメージ図にしてみます。
▼イメージ図を、フローで簡単にご説明します。
①[cron]:hourlyスケジュール実行
cronが、hourlyスケジュールジョブ(1時間に1回、毎時1分起動)として、 ●関係するのはこの設定ファイル |
②[script]:anacron起動スクリプト実行
①により、cronが/etc/cron.hourly/0anacron スクリプトを実行したことで ●関係するのはこのスクリプト |
③[anacron]:anacronジョブスケジュール設定を読み込み
起動したanacronプロセスは、anacron設定ファイル(/etc/anacrontab)より、 「ジョブスケジュール設定(何日おきに実行するかで指定)」と、 ●関係するのはこの設定ファイル |
④[anacron]:各ジョブの前回実行履歴を読み込み
当日既に実施済みのジョブか否かを、前回ジョブ実施日が記録された ※本ファイルは、anacronに登録したジョブ別にファイル生成されています。 ※本ファイルに記録されたジョブ履歴は、1世代(前回実行日のみ)で、 ●関係するのはこの設定ファイル |
⑤[anacron]:ジョブスケジューリング
④、⑤により抽出された本日実施が必要なジョブは、 ● ジョブ実行時刻はどう決まるか anacron起動後、ランダムで決定した「遅延時間」を待機後にジョブ実行します。 例として、3時にanacronが起動し、ランダム決定した遅延時間が計30分であれば、 ● 「遅延時間」とは何か /etc/anacrontab内の設定値に基づき以下のように決定します。 「遅延時間」=共通設定にてランダム決定した遅延時間+ ※"ランダム決定"の意味 ※"共通設定"のイメージ ※/etc/anacrontab内の設定項目
● その他条件 /etc/anacrontab内の設定にて「ジョブ実行可能な時間帯」を定義しています。 そのため、ランダム決定で算出した時刻が、設定時間帯内に納まっていない場合は 終日実行されないというわけではなく、anacronは1時間に1回起動されますので、 登録しておいたジョブの時間帯が重ならないように自動制御も行われます。 |
Part1は以上です。
次回のPart2では、anacronの具体的な設定方法、設定上の注意点等をご紹介する予定です。
ご参考頂けたら幸いです。ありがとうございました。