ディレクトリを再帰的に監視するために inotifytools を使用しています。次のコマンドを使用すると
inotifywait ./test -m
コマンドの後、 の下にディレクターを作成すると./test
、./test/test2
. 次にtest2
、たとえばファイルを削除したり、ファイルを追加したりすると、イベントが発生しなかったのは非常に奇妙です。
に時計がないようtest2
です。
それはバグですか、それとも間違った方法で使用しているだけですか?
ディレクトリを再帰的に監視するために inotifytools を使用しています。次のコマンドを使用すると
inotifywait ./test -m
コマンドの後、 の下にディレクターを作成すると./test
、./test/test2
. 次にtest2
、たとえばファイルを削除したり、ファイルを追加したりすると、イベントが発生しなかったのは非常に奇妙です。
に時計がないようtest2
です。
それはバグですか、それとも間違った方法で使用しているだけですか?
man 1 inotifywait
、次の出力が得られます。
-r, --recursive
引数として渡されたディレクトリのすべてのサブディレクトリを監視します。監視は、無制限の深さまで再帰的に設定されます。シンボリック リンクはトラバースされません。新しく作成されたサブディレクトリも監視されます。
警告: 大きなツリーのルート ディレクトリを監視しているときにこのオプションを使用すると、すべての inotify 監視が確立されるまでにかなりの時間がかかる場合があり、その間はイベントを受信できません。また、サブディレクトリごとに 1 つの inotify ウォッチが確立されるため、ユーザーごとの inotify ウォッチの最大数に達する可能性があります。デフォルトの最大値は 8192 です。/proc/sys/fs/inotify/max_user_watches に書き込むことで増やすことができます。
デフォルトでは、サブディレクトリを監視しないため、それを強制するオプションinotifywait
が必要です。-r, --recursive
したがって、必要なコマンドは次のようになります。
inotifywait -rm テスト
inotify ウォッチは再帰的ではありません。(つまり、深いレベルの通知を行う場合は、ディレクトリごとに 1 つ必要です。)