BlankTar

about | blog | works | photo

2015-07-01追記: 随分前に書いたpythonからinotifyを利用する記事もあります。よろしければ。

ファイルが変更されるタイミングを知りたい時とか、アクセスするタイミングを知りたい時とか、ありますよね。・・・あんまり無いか。
そんな時に活躍するのがLinuxカーネルに組み込まれてるinotifyって機能。
基本は適当な言語からライブラリとして呼び出すようなのですが、面倒なのでコマンドラインから。

inotify-toolsってパッケージがあります。適当にパッケージマネージャでインストール。
んでもって、
$ inotifywait -m file.txt
とかやるとfile.txtの変更を監視してくれます。
ファイル名の代わりにディレクトリを指定すれば、そのディレクトリの中にあるものを監視してくれます。
再帰的に監視したい場合は-rオプションを付ける。
$ inotifywait -mr file.txt
こんな。

$ inotifywait -mc file.txt
とかにするとCSV形式で出力します。監視対象,変更の種類,ファイル名 の順、っぽい。

出力を見ているとアクセスの種類が表示されているのですが、こいつでフィルタリングすることも出来ます。
$ inotifywait -me open,close file.txt
こうするとファイルを開いた/閉じた時だけ表示。
イベントの名前はヘルプを見れば色々載ってます。accessとかmodifyとかopen/closeとかその他いっぱい。

--formatオプションを使うと出力のフォーマットを指定したりできます。
細かいことはmanページでどうぞ。

ちなみに、ずっと付けている-mオプションを付けないと、一つ目のイベントが発生した時点でコマンドが終了してしまいます。

この記事を書きながらずっとvimのスワップファイルの挙動を見ているのだけれど、これ結構おもしろい。
一回保存するにも何度も保存したり移動したりをやってるのね。
< WerkzeugのSecureCookieを試してみた。 xlibでX11のマウスを制御してみた。 >