crontabを使用していくつかのタスクをスケジュールします。
cronが何かを実行するようにスケジュールされている間にコンピューターがシャットダウンしたり、電源が切れたりするとどうなりますか?
コンピューターの電源がオンになった後、欠落した各cronジョブは実行されますか、それともその日の欠落ジョブは無視されますか?逃したジョブが再開しない場合、コンピューターの電源を入れ直した後に逃したタスクを実行するようにcronを構成する方法はありますか?
crontabを使用していくつかのタスクをスケジュールします。
cronが何かを実行するようにスケジュールされている間にコンピューターがシャットダウンしたり、電源が切れたりするとどうなりますか?
コンピューターの電源がオンになった後、欠落した各cronジョブは実行されますか、それともその日の欠落ジョブは無視されますか?逃したジョブが再開しない場合、コンピューターの電源を入れ直した後に逃したタスクを実行するようにcronを構成する方法はありますか?
回答:
コンピューターがシャットダウンされると(または、cronデーモンが実行されていないと)、cronジョブは開始されません。
コンピューターがシャットダウンされたときに、事後に実行したいジョブがある場合は、anacronを使用します。デフォルトでインストールされます。詳細については、「man anacron」、「man anacrontab」、またはファイル/ etc / anacrontabを参照してください。
Ubuntuは、デフォルトで次のcrontabエントリにanacronを使用します。
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly
残りのcrontabをメインcronデーモンによって処理されるようにします。具体的には次のとおりです。
/etc/crontab
/etc/cron.d
/var/spool/cron
ノート
Anacron自体はデーモンとして実行されませんが、システムの起動スクリプトとcron自体に依存して実行されます。
私が見ているUbuntu 8.04ボックスでは、ブート時に/etc/init.d/anacronが実行され、毎朝07:30にcronによって実行されます。
/usr/share/doc/anacron/README.gzのREADMEには、マンページに含まれている情報よりもわずかに多くの情報があります。
例
単純な「毎日」、「毎週」、「毎月」のジョブの場合は、上記の/etc/cron.{daily|weekly|monthly}ディレクトリのいずれかにスクリプトのコピーまたはシンボリックリンクを配置します。Anacronは、毎日/毎週/毎月実行します。また、「毎週」スクリプトが通常実行される日にコンピューターがオフになっている場合は、次回コンピューターがオンになったときに実行されます。
別の例として、ここにスクリプトがあると仮定します:/usr/local/sbin/maint.sh
また、3日ごとに実行する場合、/ etc / crontabの標準エントリは次のようになります。
# m h dom mon dow user command
0 0 */3 * * root /usr/local/sbin/maint.sh
コンピューターが月の3日の00:00にオンになっていない場合、ジョブは6日まで実行されませんでした。
コンピュータがオフのときに4日目にジョブを実行し、3日目に実行を「ミス」するには、/ etc / anacrontabでこれを使用します(/ etc / crontabから行を削除することを忘れないでください)。
# period delay job-identifier command
3 5 maint-job /usr/local/sbin/maint.sh
上記の「5」の「遅延」は、anacronがこのジョブを実行する前に5分間待機することを意味します。アイデアは、ブート時にアナクロンがすぐに起動しないようにすることです。
anacron
するには、cronie-anacron
パッケージをインストールします。