「最新の」cron
デーモンはどのようにジョブを内部的にスケジュールしますか? 一部crond
の は、 を介して頻繁に実行をスケジュールしていましたat
。したがって、crontab が書き出された後、次のようになりcrond
ます。
- 将来のすべてのイベントの crontab と間隔のスリープを解析しますか?
- 集計された crontab データベースを毎分ポーリングして、現在の時刻がスケジュール パターンと一致するかどうかを判断しますか?
- 他の?
ありがとう、
この質問でいくつかのコオロギが聞こえました。いくつかの離散イベントシミュレーション論文とウィキペディアを備えた古き良きRTFC:
http://en.wikipedia.org/wiki/Cron#Multi-user_capability
この cron で使用されるアルゴリズムは次のとおりです。
- 起動時に、すべてのアカウント所有者のホーム ディレクトリで .crontab という名前のファイルを探します。
- 見つかった crontab ファイルごとに、将来、各コマンドを実行する次回の時間を決定します。
- これらのコマンドを、対応する時間と「5 フィールド」時間指定子とともに Franta-Maly イベント リストに配置します。
- メインループに入ります:
- キューの先頭にあるタスク エントリを調べて、それが実行されるまでの期間を計算します。
- その時間は寝てください。
- 目覚めて正しい時間を確認した後、タスクを作成したユーザーの権限でキューの先頭で (バックグラウンドで) タスクを実行します。
- 次回このコマンドを実行する時間を決定し、その時点でイベント リストに戻します。