1. ホーム
  2. linux

[解決済み] cronは内部でどのようにジョブをスケジューリングしているのですか?

2022-03-12 22:23:24

質問

モダンはどのようなものですか? cron デーモン 内部 は、ジョブのスケジュールを作成するのですか? 一部 crond を使用して、頻繁に実行をスケジューリングしていました。 at . では、クーロンタブが書き出された後、はたして crond :

  1. 将来のすべてのイベントのためにcrontabをパースし、インターバルのためにsleep?
  2. 1分ごとに集約されたcrontabデータベースをポーリングして、現在の時刻がスケジュールパターンに一致するかどうかを判断する?
  3. その他?

ありがとうございます。

解決方法は?

この質問には、いくつかの鳴き声が聞こえます。 離散事象シミュレーションの論文とウィキペディアを使った、古き良きRTFCです。

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

このクーロンが使用するアルゴリズムは次のとおりです。 は以下の通りです。

  1. 起動時に、各自のホームディレクトリにある.crontabというファイルを探します。 すべてのアカウント所有者
  2. 見つかった各クrontabファイルについて、次回以降の時間を決定します。 各コマンドを実行する。
  3. これらのコマンドをFranta-Malyのイベントリストに配置し 対応する時刻とそのquot;five フィールド"時間指定子。
  4. メインループに入る。
    1. キューの先頭にあるタスクのエントリを調べ、どのくらい先のタスクか計算する。 実行されるのは未来です。
    2. その期間だけスリープする。
    3. 起床後、正しい時刻であることを確認した後、以下のタスクを実行します。 キューの先頭(バックグラウンド)である したユーザーの権限で を作成します。
    4. このコマンドを次に実行する時期を決定し、その時期に合わせて その時点でイベントリストに戻す