午前2時にバックアップをスケジュールしたとしても、その時間にノートパソコンの電源が切れている場合、通常のcronジョブでは実行が失われてしまいます。 アナクロン この特定のケースに対応するため、期間が経過したことを検知するとすぐに、次回の起動時にタスクを起動します。
遅延が許容される日次、週次、月次のタスクには、このツールを使用します。特定の時間間隔での実行、10分ごとの実行、部門ごとの高度な監視などには、cronやsystemdのタイマーの方が適しています。

選択は主に、必要な精度と機械の起動時間によって決まります。
- クロン 予定時刻に電源が投入され、1日に1回未満の頻度で稼働する機械に適しています。
- アナクロン 数日単位で作業を行い、一定期間の休息後に、日々の、週ごとの、または月ごとのタスクを片付ける。
- あ システムタイマー より正確なスケジュールを提供する
永続的=trueサービスに直接関連する依存関係とログ。
Anacronはcronをあらゆる場面で置き換えるわけではありません。午前8時30分に正確にコマンドを実行しようとするわけでもありません。指定された日数が経過したかどうかを確認し、設定された遅延時間だけ待機してからコマンドを実行し、日付を記録します。最後の実行時刻は計算には使用されません。
ワークステーションや、常時稼働していない小型サーバーでは、これで十分な場合が多いです。systemd で既に管理されているサーバーでは、 システムタイマー 新しいタスクに対して、より柔軟なソリューションを提供します。
Anacronをインストールし、既存の設定を読み込みます。
DebianまたはUbuntuでは、パッケージをインストールしてから、利用可能なバージョンを確認してください。
sudo apt install anacron
アナクロン-V
Fedora、Rocky Linux、またはAlmaLinuxでは、通常、Cronieパッケージファミリーによって実装が提供されます。何かを変更する前に、インストールされているパッケージを確認してください。
コマンド -v アナクロン
次に、メインファイルを編集せずに表示します。
sudo cat /etc/anacrontab
sudo ls -l /var/spool/anacron
最初のファイルにはタスクが記述されています。2番目の場所にはタスクのタイムスタンプが格納されています。ディストリビューションによっては、anacronはcron、systemdサービス、または起動時にトリガーされます。実際に何が存在するかを確認してください。
systemctl status anacron.service --no-pager
systemctl list-timers --all | grep -i anacron
まず設定を保存します。 /etc/anacrontab 以下のタスクが考慮されなくなる可能性があります。
sudo cp /etc/anacrontab /etc/anacrontab.bak-$(date +%F-%H%M)
sudo nano /etc/anacrontab
1 15 backup-home /usr/local/sbin/backup-home.sh >> /var/log/backup-home.log 2>&1
4つの分野はそれぞれ特定の役割を担っている。
一1日という期間を定義する。十五アナクロン開始後、15分間の遅延を追加する。バックアップホームタイムスタンプとログ記録に使用される一意の識別子です。- 最後のフィールドには注文内容全体が記載されています。
構文を検証してから、制御されたテストを実行します。
まず、スクリプト自体をテストします。スクリプトは実行可能で、期待される結果を生成し、失敗した場合はゼロ以外のコードを返す必要があります。
sudo test -x /usr/local/sbin/backup-home.sh
sudo /usr/local/sbin/backup-home.sh
エコー$?
次に、タスクを実行せずにanacrontabファイルを検証します。
戻りコードがゼロの出力がないということは、構文が受け入れられたことを示しています。タスクのみを実行するには バックアップホーム
sudo anacron -f -n -d backup-home
このコマンドは実際にスクリプトを実行します。削除や同期処理でテストしないでください。 - 消去 または、取り消し不可能な操作。これらのオプションは、タスクを強制的に実行し、遅延をキャンセルし、Anacronをフォアグラウンドに保持してその動作を表示します。
ログとタイムスタンプから実行の詳細を確認してください
テスト後、まずは保存されたファイルの有無や日付など、業務上の成果を確認してください。anacronのタイムスタンプは、コマンドが実行され完了したことのみを証明するものです。
sudo stat /var/spool/anacron/backup-home
sudo tail -n 80 /var/log/backup-home.log
systemdユニットを含むディストリビューションについては、以下も参照してください。
これらのコマンドが空のままの場合は、ディストリビューションの cron ログを確認してください。 /var/log/syslog DebianまたはUbuntu上で /var/log/cron RHELファミリーについて。ガイド 起動後にトリガー処理を復元するのに役立ちます。
重要な注意点として、Anacronはスクリプトが失敗した場合でも、コマンドが完了した日付を記録します。Anacronはエラー回復システムではありません。スクリプトは結果をログに記録し、前提条件を確認し、タスクが重要な場合はアラートを送信する必要があります。
cronジョブを置き換える前に注意すべき制限事項
特定の時刻に開始する必要のあるタスクには、アナクロンを使用しないでください。アナクロンの期間は日数で計算され、遅延はアナクロンがトリガーされた時点から始まります。数日間のダウンタイムの後、遅延した各IDは、実行されなかった日数ごとに1回ではなく、1回ずつ実行されます。
既存のタスクを移動する場合は、そのユーザーを特定してから移動してください。 /etc/anacrontab 通常はroot権限で処理されます。ユーザーのcrontabからコピーされたコマンドは、誤った所有者のファイルを作成したり、アクセスすべきでないデータにアクセスしたりする可能性があります。
そこには Anacronのマニュアルページ テストおよび実行オプションについて文書化します。 Anacrontab マニュアル 期間、遅延、識別子、および順序の各フィールドを指定します。古いcronジョブは1サイクル分コメントアウトしたままにしておき、タスクの実際の出力を確認してから、追いつき処理が正常に動作している場合にのみ削除してください。