Anacron は、システムが再起動するたびに実行されるサービスであり、cron をチェックし、システムがダウンしている間に実行される予定だったためにまだ実行されていないスケジュールされたジョブをチェックします。 /etc/cron.hourly/anacron をスキャンします これらの失敗したジョブを実行するかどうかを決定するための 3 つの要因のファイル。 3 つの要因は、/var/spool/anacron/cron.daily ファイルの存在、anacron が最後に実行されてから 24 時間の経過時間、およびシステムへの AC 電源の存在です。 3 つの要素すべてが肯定的である場合、anacron は先に進み、/etc/cron.daily にあるスクリプトを自動的に実行します。 、/etc/cron.weekly 、および /etc/cron.monthly ディレクトリは、anacron のメイン構成ファイル /etc/anacrontab で定義された設定と条件に基づいています。 /etc/anacrontab ファイルのデフォルトの内容を以下に示します:
$ cat /etc/anacrontab SHELL=/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root RANDOM_DELAY=45 START_HOURS_RANGE=3-22 #period in days delay in minutes job-identifier command 1 5 cron.daily nice run-parts /etc/cron.daily 7 25 cron.weekly nice run-parts /etc/cron.weekly @monthly 45 cron.monthly nice run-parts /etc/cron.monthly
このファイルには 5 つの環境変数が定義されています:SHELL とパス 変数は、スクリプトの実行に使用されるシェルとパスを設定します (このファイルの下部に定義されています)。 MAILTO 出力およびエラーメッセージが送信されるユーザー名または電子メールを定義します。 RANDOM_DELAY 最大ランダム遅延を分単位で表します (最後の 3 行の 2 列目に定義されているジョブの基本遅延に追加されます)、および START_HOURS_RANGE ジョブを開始できる時間帯を示します。
上記の出力例の最後の 3 行では、実行するスケジュールとスクリプトを定義しています。最初の列は、指定されたジョブがこの日数または期間内に実行されたかどうかを確認するために anacron が使用する期間 (または @daily、@weekly、@monthly、または @yearly) を表し、2 番目の列は、ジョブの遅延を分単位で指定します。ジョブを実行する前に待機する anacron、3 番目の列はジョブ識別子を識別し、4 番目の列は /etc/cron.daily、/etc/cron.weekly、および /etc/cron の内容を実行するために使用するコマンドを指定します。 .monthly ファイル。ここでは、run-parts コマンドを使用して、3 つのディレクトリの場所にあるすべてのファイルをデフォルトのナイスネスで実行します。
ジョブごとに、anacron はジョブが指定された日または期間 (列 1) に以前に実行されたかどうかを確認し、実行されていない場合は分数 (列 2) 待ってから実行します。 Anacron は、コマンド プロンプトで手動で実行できます。たとえば、/etc/anacrontab ファイルでスケジュールされているが実行されなかったすべてのジョブを実行するには、次のコマンドを発行できます。
# anacron
Anacron は、定義されたスケジュールごとに、/var/spool/anacron ディレクトリにあるファイルに実行日を保存します。