ファイルやディレクトリのイベントに応じてジョブを実行する – incron その3

kiccoCentOS,incron,incrond,incrontab,inotify,linux,イベント,ジョブ,ファイルシステム,実行

どーもー、kiccoです。

昨日(6/3)モンテディオ山形vsFC東京の試合を観に国立競技場に行ってきました。
アウェイながらも開始3分に先制し「これはいけるっ」と浮かれていたら、
後半マークが甘くなったところで3連続失点しあえなく撃沈。
90分間守備の集中が切れなければそんなに負けないチームだと思うんですが。
故郷の代表として頑張って欲しいです♪

さて前置きが長くなりました。
前回前々回に引き続き、incron特集の第3回です。

今回のアジェンダです。
・サーバの設定ファイル
・ワイルドカードの使い方

それではまずサーバの設定ファイルについて見ていきます。
サーバの設定ファイルのデフォルトは /etc/incron.conf です。
設定ファイルには以下のパラメータを指定できます。

  名前     内容     初期値     設定例  
  system_table_dir     システム用設定を保存するディレクトリを指定     /etc/incron.d     –  
  user_table_dir     各ユーザの設定を保存するディレクトリを指定     /var/spool/incron     –  
  allowed_users     使用許可ユーザの一覧ファイルを指定     /etc/incron.allow     –  
  denied_users     使用拒否ユーザの一覧ファイルを指定     /etc/incron.deny     –  
  lockfile_dir     多重起動防止用のロックファイルを作成するディレクトリ名を指定     /var/run     –  
  lockfile_name     多重起動防止用のロックファイルのファイル名を指定     incrond     –  
  editor     incron テーブルを編集する際のエディターを指定     <NO EDITOR>     vi  

“editor"は未設定の場合、システムのデフォルトエディタが使われます。
デフォルトのままで特に修正する必要はなさそうですね。

続いてはワイルドカードの使い方です。
incron テーブルでは以下のワイルドカードを使用できます。

  表記     内容     展開例  
  $$     “$"文字     $  
  $@     監視対象のパス     /var/log/secure  
  $#     イベント発生の起因となったファイルのパス     secure  
  $%     発生したイベントのテキスト表記     IN_OPEN, IN_ACCESS  
  $&     発生したイベントの数値表記     32(IN_OPEN), 1(IN_ACCESS)  

例えば"/etc"配下のファイルが修正された場合にシステムログにファイル名とイベントを出力させるたい時は、次のように設定します。
/etc IN_MODIFY logger -t incron [$%] $@/$#

試しにhosts.allowに"#"を挿入してみます。
# date; echo "#" >> /etc/hosts.allow
Thu Jun 4 20:43:10 JST 2009

システムログに期待した情報が出力されています。
# tail -1 /var/log/messages
Jun 4 20:43:10 casper incron: [IN_MODIFY] /etc/hosts.allow

この仕組みを使えば、例えば、いつ、どのファイルに何の作業を行ったかの履歴を残すことが可能ですね。

さて、3回に分けて incron を特集してきましたが、一応今回が最終回となります。
またお届けできるようなネタがあればここで書きたいと思います。

上手に使って素敵なハッカーライフを(^o^)/~