読者です 読者をやめる 読者になる 読者になる

UNIX的なアレ

UNIX的なこととかいろいろ

ファイルシステムの変更を受け取れる、inotifywatch

kernel2.6.13から導入された、apiでinotifyというものがあります。これは、ファイルシステムのイベントを監視するためのもので、指定したディレクトリ配下に対しての操作をとることができます。
たとえば、/tmp を監視しているとしたら、/tmp配下への操作をこのapiで監視をすることができます。
kernelのapiですが、コマンドラインで使用するためにはinotifywatch等のコマンドが必要になるのでインストールをしてみます。debian系ならaptで一発で入ります。

インストールする

 sudo apt-get install inotify-tools

これでOK。

早速使ってみる

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の中身では使われているようですね。