男 inotify 待つ:
delete_selfが監視するファイルまたはディレクトリが削除されました。このイベントの後、ファイルやディレクトリは監視されなくなります。このイベントを明示的に受信しない場合でも、このイベントが発生する可能性があります。
unmount 監視対象のファイルまたはディレクトリを含むファイルシステムがマウント解除されました。このイベントの後、ファイルやディレクトリは監視されなくなります。このイベントを明示的に受信しない場合でも、このイベントが発生する可能性があります。
そのマニュアルページで、「イベントが明示的にリスニングされていなくてもイベントが発生する可能性がある」という意味をどのように理解していますか?
https://manpages.debian.org/stretch/inotify-tools/inotifywait.1.en.html
ベストアンサー1
inotifywaitにイベント(つまり--monitor
パターンではない)を待つように要求し、1つ以上のイベントタイプを指定すると(optionsを使用--event
)、通常、特定のイベントが発生するまで終了しません。たとえば、
$ touch foo
$ inotifywait -e access foo
Setting up watches.
Watches established.
$ echo >>foo
$ cat foo
foo ACCESS
$ $ echo $?
0
$
(2つの列は個々の端末を表し、空の行を挿入してイベントが時系列で表示されるようにします。)ここで、時計を設定した後にfoo
MODIFYイベントがありますが、イベントフィルタにinotifywait
MODIFYが含まれていないため、何も起こりません。このinotifywait
コマンドは、ACCESS イベントが発生した後にのみ返されます。
ここで、アクセスの監視中にファイルが削除されたとします。
$ inotifywait -e access foo
Setting up watches.
Watches established.
$ rm foo
$ $ echo $?
1
$
foo を削除すると、DELETE_SELF イベントがトリガーされます。このinotifywait
コマンドはこのイベントを確認します。 ACCESSイベントのみを報告するようになっているため、印刷されません。ただしinotifywait
、終了:フィルタにない場合でもイベントを計算します。コマンドは状態 1 で終了します。これは、「非リスニングイベントが発生しました」(ほとんどのモニタリングされていないイベントのように無視されない)を意味します。