60

「最新の」cronデーモンはどのようにジョブを内部的にスケジュールしますか? 一部crondの は、 を介して頻繁に実行をスケジュールしていましたat。したがって、crontab が書き出された後、次のようになりcrondます。

  1. 将来のすべてのイベントの crontab と間隔のスリープを解析しますか?
  2. 集計された crontab データベースを毎分ポーリングして、現在の時刻がスケジュール パターンと一致するかどうかを判断しますか?
  3. 他の?

ありがとう、

4

2 に答える 2

75

この質問でいくつかのコオロギが聞こえました。いくつかの離散イベントシミュレーション論文とウィキペディアを備えた古き良きRTFC:

http://en.wikipedia.org/wiki/Cron#Multi-user_capability

この cron で使用されるアルゴリズムは次のとおりです。

  1. 起動時に、すべてのアカウント所有者のホーム ディレクトリで .crontab という名前のファイルを探します。
  2. 見つかった crontab ファイルごとに、将来、各コマンドを実行する次回の時間を決定します。
  3. これらのコマンドを、対応する時間と「5 フィールド」時間指定子とともに Franta-Maly イベント リストに配置します。
  4. メインループに入ります:
    1. キューの先頭にあるタスク エントリを調べて、それが実行されるまでの期間を計算します。
    2. その時間は寝てください。
    3. 目覚めて正しい時間を確認した後、タスクを作成したユーザーの権限でキューの先頭で (バックグラウンドで) タスクを実行します。
    4. 次回このコマンドを実行する時間を決定し、その時点でイベント リストに戻します。
于 2010-11-10T04:34:55.807 に答える