Skip to content

inotify-tools を使ってファイルシステムへのアクセスをモニタする

かつて Windows では FileMon というユーティリティを使うことでファイルシステムへのアクセス(アクティビティ)をモニタすることが出来ました。しかし、2006 年以降、FileMon は Process Monitor というツールに統合され、ファイルシステム / プロセス / レジストリのアクティビティを横断的にモニタすることができるようになりました。

Linux でも inotify-tools を使うことでファイルシステムのアクティビティをモニタすることができます。今回は inotify-tools を CentOS 5.5 x86_64 へインストールしてみます。

inotify-tools のインストール

inotify-tools は DAG リポジトリで配布されています。DAG リポジトリが未設定であれば、/etc/yum.repos.d/dag.repo というファイルを以下の内容で新規作成します。

1
2
3
4
5
6
[dag]
name=Dag RPM Repository for Red Hat Enterprise Linux
baseurl=http://ftp.riken.jp/Linux/dag/redhat/el$releasever/en/$basearch/dag
gpgcheck=1
gpgkey=http://ftp.riken.go.jp/pub/Linux/dag/RPM-GPG-KEY.dag.txt
enabled=0

DAG リポジトリの設定が完了したら、yum で inotify-tools をインストールします。DAG リポジトリを "enabled=0" で設定しているので、yum install する際に "--enablereop" オプションで DAG リポジトリを明示的に指定します。

1
sudo yum -y --enablerepo=dag install inotify-tools

これでインストールは完了です。

使い方

ファイルシステム上でイベントが発生するのを待って、その結果を表示するには "inotifywait" を使います。inotifywait の代表的なオプションには以下のようなものがあります。

  • -m
    • 継続的にコマンドを実行し続けます。このオプションを指定しないと、ひとつのイベントを検知しただけで、inotifywait は終了します。
  • --format
    • 結果の出力フォーマットを指定します。
  • -r
    • 指定したディレクトリを起点に、再帰的にファイルシステムをモニタします。
  • --timefmt
    • 日時の出力を strftime(3) と同じフォーマットで指定できます。このオプションを指定するには、--format オプションで "%T" が指定されている必要があります。

実行例

/var 配下を再帰的にモニタする場合の実行例は以下のようになります。

1
inotifywait -m --format '%T %w %f %e' -r --timefmt '%F %T' /var

実行結果は以下のようになります。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
2010-11-10 00:23:12 /var/lock/  OPEN,ISDIR
2010-11-10 00:23:12 /var/ lock CLOSE_NOWRITE,CLOSE,ISDIR
2010-11-10 00:23:12 /var/lock/  CLOSE_NOWRITE,CLOSE,ISDIR
2010-11-10 00:23:12 /var/lock/ irqbalance OPEN
2010-11-10 00:23:12 /var/lock/ irqbalance CLOSE_NOWRITE,CLOSE
2010-11-10 00:23:17 /var/ lock OPEN,ISDIR
2010-11-10 00:23:17 /var/lock/  OPEN,ISDIR
2010-11-10 00:23:17 /var/ lock CLOSE_NOWRITE,CLOSE,ISDIR
2010-11-10 00:23:17 /var/lock/  CLOSE_NOWRITE,CLOSE,ISDIR
2010-11-10 00:23:24 /var/spool/ at OPEN,ISDIR
2010-11-10 00:23:24 /var/spool/ at CLOSE_NOWRITE,CLOSE,ISDIR
2010-11-10 00:23:24 /var/log/ cron MODIFY
        ・
        ・
        ・