ファイル/ディレクトリの変更に応じて任意のジョブを実行するincron

 Linuxにてジョブのスケジューリングを行う定番ツールであるcronについては、その機能と活用法を詳細に解説した多数のドキュメント、チュートリアル、ガイドの類が存在しており、今更特に説明する必要はないだろう。こうした伝統的なcronで行えるのが時刻指定型のジョブ実行であるのに対して、ファイルシステムの変更を検出して指定のコマンドを実行させるというコンセプトで作られたcronクローンの一種に incron というツールが存在する(正式名称はinotify cron)。incronを使用するための設定としては、どのようなファイル/ディレクトリの変更を監視対象とするかおよび、そこでの変更発生時に実行すべきジョブの登録が必要となる。

 Fedoraユーザの場合はyumを介したincronのインストールが行えるようになっており、具体的には「yum install incron」というコマンドを実行すればいい。インストール後に行うべき作業は、incronデーモンの起動および、それに引き続くジョブのスケジューリング設定である。それにはまずroot権限を取得し「service incrond start」コマンドの実行によりincronデーモンを起動させ、次にブート時の自動起動を設定させるための「chkconfig incrond on」コマンドを実行しておく。

 この場合のジョブのスケジューリングは、crontabと同様のincrontabと呼ばれるコマンドを介して、テーブルファイルへの登録をする仕様となっている。incrontabで登録する各行には、個々のファイル名に続けて、監視対象とするファイルシステムの変更イベントをコンマ区切りで一覧したリストおよび、当該イベントの発生時に実行すべきコマンドを記述すればいい。こうして登録しておいたジョブは、指定しておいたファイルやディレクトリの変更をトリガとして実行されることになる。incronにてモニタ可能なファイルシステムの全イベントを確認したければ、「incrontab -t」コマンドを使用すればいい。下記に一覧したものがこうして作成されるリストであるが、ここには個々の説明が並記してある。

  • IN_ACCESS:当該ファイルがアクセスされた
  • IN_MODIFY:当該ファイルが変更された
  • IN_ATTRIB:メタデータが変更された(パーミッション、拡張属性、タイムスタンプなど)
  • IN_CLOSE_WRITE:書き込み可能ファイルの1つが閉じられた
  • IN_CLOSE_NOWRITE:書き込み不可能ファイルの1つが閉じられた
  • IN_OPEN:ファイルの1つが開かれた
  • IN_MOVED_FROM:当該ディレクトリの外にファイルが出された
  • IN_MOVED_TO:当該ディレクトリの中にファイルが入れられた
  • IN_CREATE:当該ディレクトリ中にファイル/ディレクトリが新規作成された
  • IN_DELETE:当該ディレクトリ中からファイル/ディレクトリが削除された
  • IN_DELETE_SELF:当該ファイル/ディレクトリ本体が削除された
  • IN_CLOSE:IN_CLOSE_WRITEとIN_CLOSE_NOWRITEの双方を対象とする
  • IN_MOVE:IN_MOVED_FROMとIN_MOVED_TOの双方を対象とする
  • IN_ALL_EVENTS:ここに一覧した全イベントを対象とする
  • IN_DONT_FOLLOW:シンボリックリンクは参照させない
  • IN_ONLYDIR:当該パスがディレクトリの場合のみ監視させる
  • IN_MOVE_SELF:当該ファイル/ディレクトリ本体が移動された