前回、ファイル・ディレクトリの変更について監視する、「inotify」という機能についてを紹介したが、今回紹介するのはその機能を利用してプログラムを実行させる『incron』というツールだ。
cronと似たようなもので、cronは時間が来たらプログラムを実行させるが、incronではファイルの変動を契機にプログラムを実行させる。
1.インストール
まずはincronのインストールから。
以下のコマンドを実行する。
Debian/Ubuntuの場合
apt-get install incron
RHEL系の場合
yum install incron
インストール完了後、incronの起動および自動起動設定を行う。
Debian/Ubuntuの場合
service incron start
update-rc.d incron enable
RHEL系の場合
service incrond start
chkconfig incrond on
2.incronの設定
次に、incronの設定を行う。
設定方法はcronと同じように、incrontabというコマンドを用いて設定する。
incrontab -e
incrontabでの記述は、以下の順で記述し、スペースで区切る。
トリガーとなるイベントが複数ある場合は、「,(カンマ)」で区切って記述する。
監視対象ファイル トリガーとなるイベント 実行コマンド
2017/02/22 追記
実行コマンドでは、以下のワイルドカードが指定できる。例えば、ディレクトリ監視時は「$@/$#」でイベントの発生したファイルのフルパスを取得できる。
- $$ … 「$」を使用する
- $@ … モニタリングしていたPATH
- $# … イベントの発生したファイル名
- $% … イベントフラグ名(テキストベース)
- $& … イベントフラグ番号
トリガーイベントについては、「incrontab -t」で出力、確認が可能。
イベントの種類・意味については、inotifyと同じとなっている。
イベント名 | イベント発生タイミング |
---|---|
IN_ACCESS | readなどでアクセスされた |
IN_MODIFY | writeなどでファイル内容が変更された |
IN_ATTRIB | アクセス件やタイムスタンプなどのメタデータが変更された |
IN_CLOSE_WRITE | 書き込みモードでオープンされた後クローズされた |
IN_CLOSE_NOWRITE | 読み込みモードオープンされた後クローズされた |
IN_CLOSE | オープンモードに関わらずクローズされた |
IN_OPEN | オープンされた |
IN_MOVED_TO | 対象ディレクトリ内へ移動された |
IN_MOVED_FROM | 対象ディレクトリ内から移動された |
IN_MOVE | 対象自身が移動された |
IN_CREATE | 対象ディレクトリ内で新規作成された |
IN_DELETE | 対象ディレクトリ内で削除された |
IN_DELTELE_SELF | 対象自身が削除された |
IN_UNMOUNT | 対象を含むファイルシステムがアンマウントされた |
記述完了後、設定内容を反映するため以下のコマンドを実行する。
incrontab -d
設定ファイルなどを監視対象として、実行コマンドとしてサービスの再起動などを設定してあげるなど、使い道は様々だ。