anacron(アナクロン)とは | 意味や読み方など丁寧でわかりやすい用語解説
anacron(アナクロン)の意味や読み方など、初心者にもわかりやすいように丁寧に解説しています。
読み方
日本語表記
アナクロン (アナクロン)
英語表記
anacron (アナクロン)
用語解説
anacronはLinuxやUnix系OSにおいて、システムの定期的なタスク実行を管理するユーティリティの一つである。一般的な定期実行ツールであるcronと似た役割を持つが、その最大の違いは、システムが常時稼働していない環境でのタスク実行に特化している点にある。cronは指定された時間にシステムが稼働していればタスクを実行するが、システムが停止していた場合、その期間に実行されるべきだったタスクはスキップされ、次回以降の実行まで持ち越されることはない。一方anacronは、システムが停止していた期間中に実行されるべきだったタスクを、システムが次に起動した際に自動的に検出し、実行するという機能を持つ。この特性から、デスクトップPCやノートPCのように、電源が頻繁にオン・オフされる環境で、システムメンテナンスやログの整理、バックアップといった重要な定期タスクが確実に実行されることを保証するために利用される。anacronの主な役割は、システムが起動した際に、設定された期間(日次、週次、月次など)で未だ実行されていないタスクがあれば、それらを遅延実行することにある。
anacronの動作原理は、その設定ファイルである/etc/anacrontabと、各タスクの最終実行日時を記録するスタンプファイルに深く関連している。anacronは通常、システムの起動時、またはcronによって定期的に(例えば1時間おきに)呼び出されることで起動する。anacronが起動すると、まず/etc/anacrontabを読み込み、そこに定義されている各ジョブについて処理を開始する。
/etc/anacrontabの各行は、以下の4つのフィールドとコマンドで構成される。
period delay job-identifier command
periodはタスクの実行間隔を指し、@daily(日次)、@weekly(週次)、@monthly(月次)のいずれかを指定する。これは、タスクが最低でもこの期間に一度実行されることを意味する。
delayは、anacronが起動してから実際にコマンドを実行するまでの遅延時間を分単位で指定する。これは、システム起動直後の高負荷を避け、他の重要なサービスが起動する時間を確保するために用いられる。
job-identifierは、ジョブを一意に識別するための名前である。この識別子をもとに、anacronは/var/spool/anacron/ディレクトリ内にスタンプファイルを作成し、そのジョブの最終実行日時を記録する。
commandは、実際に実行されるシェルコマンドやスクリプトを指定する。多くの場合、run-partsコマンドと組み合わせて/etc/cron.dailyや/etc/cron.weekly、/etc/cron.monthlyといったディレクトリ内のスクリプト群を実行する形式が取られる。これにより、システム管理者は、anacron本体の設定ファイルを直接編集することなく、特定のディレクトリにスクリプトを配置するだけで簡単に新しい定期タスクを追加できる。
anacronは、ジョブの実行を判断する際に、現在のシステム時刻と、スタンプファイルに記録された最終実行日時を比較する。もし、スタンプファイルに記録された日時がperiodで指定された期間よりも古く、かつ、その期間中にシステムが停止していたためにタスクが実行されなかったと判断された場合、anacronはそのタスクをdelayで指定された時間だけ遅らせて実行する。実行後、スタンプファイルは現在のシステム時刻で更新される。このようにして、システムが停止していたために見過ごされたタスクも、次にシステムが稼働した際に確実に実行される仕組みが提供される。
anacronとcronの使い分けは明確である。常時稼働が前提のサーバー環境では、厳密な時刻にタスクを実行できるcronが主要なツールとなる。データのバックアップやログのローテーション、データベースのメンテナンスなど、特定の時刻に実行されるべきタスクにはcronが適している。一方、デスクトップPCやノートPCのような、システムが頻繁にシャットダウンされたりスリープ状態になったりする環境では、cronだけでは定期タスクがスキップされてしまうリスクがある。このような場合、anacronを併用することで、システムメンテナンスが確実に実施され、システムの健全性を保つことができる。例えば、セキュリティアップデートの確認スクリプトや、一時ファイルのクリーンアップ、ユーザーデータのバックアップスクリプトなどをanacronで管理することで、ユーザーが意識しなくてもシステムが常に最新かつクリーンな状態に保たれる。
ただし、anacronの特性として、タスクの実行時刻は厳密には保証されないという点に注意が必要である。システム起動時や設定された遅延時間後に実行されるため、常に同じ時刻に実行されるわけではない。また、システムが長時間停止していた場合、複数の日次タスクがまとめて実行されることもある。しかし、その目的が「タスクが最低でも指定された期間に一度は実行されること」であるため、これらの特性はanacronの設計思想と合致している。anacronは、システムが非定常的に運用される環境において、失われたタスク実行の機会を補完し、システムの安定稼働を支える重要なユーティリティである。