ファイルやディレクトリの編集・変更などに応じてプログラムを実行させる『incron』

前回、ファイル・ディレクトリの変更について監視する、「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
Sponsored Links

2.incronの設定

次に、incronの設定を行う。
設定方法はcronと同じように、incrontabというコマンドを用いて設定する。

incrontab -e

 

incrontabでの記述は、以下の順で記述し、スペースで区切る。
トリガーとなるイベントが複数ある場合は、「,(カンマ)」で区切って記述する。

監視対象ファイル トリガーとなるイベント 実行コマンド

 

2017/02/22 追記
実行コマンドでは、以下のワイルドカードが指定できる。例えば、ディレクトリ監視時は「$@/$#」でイベントの発生したファイルのフルパスを取得できる。

  • $$ … 「$」を使用する
  • $@ … モニタリングしていたPATH
  • $# … イベントの発生したファイル名
  • $% … イベントフラグ名(テキストベース)
  • $& … イベントフラグ番号

 

トリガーイベントについては、「incrontab -t」で出力、確認が可能。
イベントの種類・意味については、inotifyと同じとなっている。

イベント名イベント発生タイミング
IN_ACCESSreadなどでアクセスされた
IN_MODIFYwriteなどでファイル内容が変更された
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

 

設定ファイルなどを監視対象として、実行コマンドとしてサービスの再起動などを設定してあげるなど、使い道は様々だ。


Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。

*