ファイルシステムの変更を受け取れる、inotifywatch
kernel2.6.13から導入された、apiでinotifyというものがあります。これは、ファイルシステムのイベントを監視するためのもので、指定したディレクトリ配下に対しての操作をとることができます。
たとえば、/tmp を監視しているとしたら、/tmp配下への操作をこのapiで監視をすることができます。
kernelのapiですが、コマンドラインで使用するためにはinotifywatch等のコマンドが必要になるのでインストールをしてみます。debian系ならaptで一発で入ります。
早速使ってみる
inotifywatchの使い方は簡単です。コマンドの引数に対して監視対象を渡すだけ。
今回はディレクトリ単位で監視をしようと思いますので、再帰的に取得をしてみようと思います。テスト用にホームディレクトリ配下にfooというディレクトリを作成してから実施します。
# mkdir ~/foo # inotifywatch -r ~/foo --ここで別シェルを立ち上げる-- # touch ~/foo/bar --ここで先ほどのシェルに戻る-- CTRL+Cで終了 total attrib close_write open create filename 4 1 1 1 1 /home/wadap/foo/
すると、上記の要にイベントが取得できていることがわかります。
これだけだとあまり使い道が無いようにみえるかもしれませんが、inotifyを利用したファイル同期の仕組みであるlsyncdというものもでてきているのでこれからもっと使われていくのかもしれません。
すでに、smbdやudevの中身では使われているようですね。