cronとanacronは両方とも、ユーザーが定義した特定の時点まで繰り返しタスクの実行をスケジュールできるデーモンです。
主な違いcronとは、anacron前者は、システムが連続的に実行されていることを前提としていることです。システムの電源が切れており、その間にジョブがスケジュールされている場合、ジョブは実行されません。
一方、anacron「時代錯誤」であり、24時間365日稼働していないシステム向けに設計されています。それが機能anacronするためには、タイムスタンプ付きファイルを使用して、コマンドが最後に実行された時刻を見つけます。また、/etc/anacrontab同様にファイルを維持しますcron。さらに、cron.dailyanacronを毎日実行します。したがって、anacronジョブは1日に1回しか実行できませんが、cron1分ごとに実行できます。
からman anacrontab:
実行されると、Anacronは設定ファイル(通常は/ etc / anacrontab(anacrontab(5)を参照))からジョブのリストを読み取ります。このファイルには、Anacronが制御するジョブのリストが含まれています。各ジョブエントリは、日単位の期間、分単位の遅延、一意のジョブ識別子、およびシェルコマンドを指定します。
Anacronは、各ジョブについて、このジョブが過去n日間に実行されたかどうかを確認します。nはそのジョブに指定された期間です。そうでない場合、Anacronは、遅延パラメーターとして指定された分数だけ待機した後、ジョブのシェルコマンドを実行します。
コマンドが終了すると、Anacronはそのジョブの特別なタイムスタンプファイルに日付を記録するため、いつ再実行するかを知ることができます。時間の計算には日付のみが使用されます。時間は使用されません。
つまり、タスクが毎日実行されるようにスケジュールされていて、その間にコンピューターの電源がオフになっている場合、anacronを実行すると、タスクが24時間以上前に最後に実行されたことがわかり、タスクを正しく実行できます。
たとえば、次を指定した場合/etc/anacrontab:
7 15 test.daily /bin/sh /home/username/script.sh
また、script.shジョブが実行される予定の日にシステムが実行されていない場合は、システムが復旧してから15分後にanacron実行script.shされます。
いくつかのリファレンス: