3 anacron
ジョブの構成
anacron
を使用して、継続的な稼働時間ではなく断続的なシステムでの定期的なタスクをスケジュールします。
anacron
ユーティリティは、システムがオフラインの場合にジョブが見逃されないように、特定の日または時間を指定するのではなく、日次、週次または月次間隔でジョブを実行するようにスケジュールします。 もともと、定期的に停止またはオフにされるラップトップ・コンピュータでの使用を目的としていましたが、エンタープライズ環境でも、定期的にオフラインにされる永続的なクラウド・インスタンス、コンテナおよび仮想マシンのタスクをスケジュールして、消費電力を削減し、不要になったときにホスティング・コストを削減することもできます。
anacron
がまだ実行されておらず、システムがバッテリ電源ではなくメインに接続されている場合、crond
はanacron
を自動的に起動します。
crond
デーモンは、/etc/cron.d/0hourly
のスケジュールに従って、/etc/cron.hourly/0anacron
スクリプトを毎時root
として実行します。 次に、/etc/anacrontab
の構成設定に基づいて、0anacron
スクリプトは、/etc/cron.daily
、/etc/cron.weekly
および/etc/cron.monthly
ディレクトリの内容を処理します。
スケジュールされたジョブがシステム停止時間のために実行されていない場合、そのジョブはシステムの再起動時に実行されます。
システムanacron
ジョブは、次のように/etc/anacrontab
内で定義されます:
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
RANDOM_DELAY=45
# the jobs will be started during the following hours only
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
このファイルの上部には、ジョブを実行する環境のSHELL
、PATH
、MAILTO
、RANDOM_DELAY
およびSTART_HOURS_RANGE
変数の定義が含まれており、その後にジョブ定義自体が続きます。 コメント行は#
の文字で始まります。
RANDOM_DELAY
は、anacron
によってジョブに対するdelayパラメータに追加されるランダム時間の最大分数です。 デフォルトの最小遅延は6分です。 ランダム・オフセットは、多数のジョブの同時実行が原因のanacron
によるシステムのオーバーロードを回避することが目的です。
START_HOURS_RANGE
は、スケジュールされたジョブをanacronで実行できる1日の中の時間範囲です。
このファイルの下部にはジョブ定義が含まれています。 各ジョブは、次の見出しが付いた4つの列に分かれたエントリからなります。
- period
-
日単位、週単位または月単位の
@daily
、@weekly
または@monthly
として指定されたジョブ実行の頻度。 - delay
-
ジョブの実行まで待機する分数。
- job-id
-
ログ・ファイル内のジョブの一意の名前。
- command
-
実行するシェル・スクリプトまたはコマンド。
デフォルトでは、anacron
は03:00から22:00の間にジョブを実行し、11分から50分の間でジョブを遅延させます。 /etc/cron.daily
内のジョブ・スクリプトは、システムが稼働中の場合は毎日03:11から03:50までの間に実行され、そうでない場合は、システムのブート後に、22:00より前に実行されます。 run-parts
スクリプトでは、その引数で指定されたディレクトリ内の各プログラムが連続して実行されます。
/etc/cron.weekly
内のスクリプトは、毎週31分から70分までの遅延オフセットで実行されます。
/etc/cron.monthly
内のスクリプトは、毎月51分から90分までの遅延オフセットで実行されます。
詳細は、anacron(8)
およびanacrontab(5)
の各マニュアル・ページを参照してください。