inotifywaitのマニュアルページで「明示的に聞こえない」とはどういう意味ですか?

inotifywaitのマニュアルページで「明示的に聞こえない」とはどういう意味ですか?

男 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つの列は個々の端末を表し、空の行を挿入してイベントが時系列で表示されるようにします。)ここで、時計を設定した後にfooMODIFYイベントがありますが、イベントフィルタにinotifywaitMODIFYが含まれていないため、何も起こりません。このinotifywaitコマンドは、ACCESS イベントが発生した後にのみ返されます。

ここで、アクセスの監視中にファイルが削除されたとします。

                                    $ inotifywait -e access foo
                                    Setting up watches.
                                    Watches established.
$ rm foo
$                                   $ echo $?
                                    1
                                    $

foo を削除すると、DELETE_SELF イベントがトリガーされます。このinotifywaitコマンドはこのイベントを確認します。 ACCESSイベントのみを報告するようになっているため、印刷されません。ただしinotifywait、終了:フィルタにない場合でもイベントを計算します。コマンドは状態 1 で終了します。これは、「非リスニングイベントが発生しました」(ほとんどのモニタリングされていないイベントのように無視されない)を意味します。

おすすめ記事