kubo39's blog

ただの雑記です。

inotifywait(1) について

どうもinotifywaitが意図したとおりに ATTRIB イベントを検知してくれていない。

( ՞ਊ ՞) :~/tmp $ touch foo
( ՞ਊ ՞) :~/tmp $ ln foo bar
$ ls -li
合計 0
19793702 -rw-rw-r-- 2 kubo39 kubo39 0  4月 14 00:20 bar
19793702 -rw-rw-r-- 2 kubo39 kubo39 0  4月 14 00:20 foo
$ inotifywait -m ~/tmp
Setting up watches.
Watches established.
/home/kubo39/tmp/ OPEN,ISDIR 
/home/kubo39/tmp/ CLOSE_NOWRITE,CLOSE,ISDIR 
/home/kubo39/tmp/ OPEN,ISDIR 
/home/kubo39/tmp/ CLOSE_NOWRITE,CLOSE,ISDIR 
/home/kubo39/tmp/ OPEN,ISDIR 
/home/kubo39/tmp/ CLOSE_NOWRITE,CLOSE,ISDIR 
/home/kubo39/tmp/ OPEN,ISDIR 
/home/kubo39/tmp/ CLOSE_NOWRITE,CLOSE,ISDIR 
/home/kubo39/tmp/ CREATE bar

~/tmp/* を指定するとATTRIBも観測できている。

$ inotifywait -m ~/tmp/*
Setting up watches.
Watches established.
/home/kubo39/tmp/foo ATTRIB

manの記述 をみると

IN_ATTRIB (*)
メタデータが変更された。 メタデータとは、例えば、アクセス許可 (chmod(2))、タイムスタンプ (utimensat(2) など)、拡張属性 (setxattr(2))、 リンクカウント (Linux 2.6.25 以降; link(2) のリンク先や unlink(2) など)、ユーザー/グループ ID (chown(2) など) などである。

...

ディレクトリを監視する場合:

* 上記でアスタリスク (*) が付いたイベントは、 ディレクトリ自身とディレクトリ内のオブジェクトのどちらに対しても発生する。

のような記述があり、ディレクトリ内のオブジェクトのリンクカウントの増減を観測できないのは奇妙に感じる。

inotifywait(1)のman pageにはそもそも言及がない。

とりあえず現在はファイルを監視することでイベントを観測しているが、なんだかもやっとしたままなのでもう少し調べたい。