cron と anacron の比較

cron と anacron の比較

Linux 上で cron/anacron がどのように動作するかについては、かなりよく理解しています。私の質問は次のとおりです。

  1. /etc/cron.dailyanacronはログイン時に実行され、スクリプトが実行されてから1日以上経過しているかどうかを確認します。
  2. anacronはスクリプトを実行し/etc/cron.daily、タイムスタンプを更新します。/var/spool/anacron/cron.daily
  3. アナクロンの終了
  4. コンピュータが24時間以上オンのままになる
  5. cronが実行され、cron.dailyの時刻の一致を検出します。
  6. cronは何もしませんtest -x anacrontab" == True

コンピュータが 24 時間以上稼働している場合、cron は cron.daily 内のスクリプトをどのように実行するのでしょうか (これは Debian ベースのディストリビューションです)?

デフォルト/etc/crontab(1 分ごとに実行) では、 の存在 (より正確には -x ビット) をテストし/usr/bin/anacron/etc/cron.dailyフォルダーが見つかった場合は無視しますが、作業を実行するために anacron を再起動することはないようです。

編集:

つまり、cron はフォルダーから anacron を起動します/etc/cron.dが、コンピューターがオンになっていて、毎日午前 7:30 にログインしている場合のみです。スプレッドシートでちょっとしたカンフーをした後、スクリプトは/etc/cron.daily1 分から 31.5 時間の間で実行されるという結論に達しました。

元:

シナリオ 1:

  • 2021年5月23日午後11時59分にログイン
  • anacronのタイムスタンプが/etc/cron.daily2021年5月23日より古いと仮定すると、anacronはすべてのスクリプトを実行し/etc/cron.daily、タイムスタンプを2021年5月23日に更新します。
  • ログアウト
  • 2021年5月24日午前12時に再度ログインしてください
  • anacronは、最後の実行が2021年5月23日であり、現在は2021年5月24日であることを確認しているため、anacronはすべてのスクリプトを実行します。/etc/cron.daily
  • 実行間の経過時間: 1 分

シナリオ2:

  • 2021年5月23日午前12時にログイン
  • anacronのタイムスタンプが/etc/cron.daily2021年5月23日より古いと仮定すると、anacronはすべてのスクリプトを実行し/etc/cron.daily、タイムスタンプを2021年5月23日に更新します。
  • コンピュータは2021年5月23日の午前7時30分までオンのままログインしたままです
  • cronはcrontabファイルからanacronを実行します。/etc/cron.d
  • タイムスタンプは2021年5月23日なので何も起こりません
  • コンピュータは2021年5月24日の午前7時30分までオンのままログインしたままです
  • cronはcrontabファイルからanacronを実行します。/etc/cron.d
  • anacronは、最後の実行が2021年5月23日であり、現在は2021年5月24日であることを確認しているため、anacronはすべてのスクリプトを実行します。/etc/cron.daily
  • 走行間の経過時間: 31.5 時間

答え1

すべてのシステム/etc/cron.daily、、/etc/cron.weeklyなどのファイルには、実行するためのエントリが含まれています。アナクロンこれには実行するためのエントリが含まれていますクローン./etc/crontabには次のエントリが含まれます実行パーツとなることによってアナクロン運営は実行パーツまたはクローン

考慮すべきもう1つのファイルは/etc/anacrontab/etc/crontab

重要なシステムクローン関連ファイルは、/etc/cron.daily/logrotateログローテーション処理を開始するために使用されるスクリプトです。

一般ユーザークローンタブシステムの cronjobs とは独立して実行されます。

は毎分実行されるわけではないことに注意してください/etc/crontab。アクティビティはさまざまな crontab 仕様によって決まります。

関連情報