我正在使用inotifytools以递归方式监视目录。当我使用以下命令时
inotifywait ./test -m
在命令之后,如果我在./test
下创建了一个导演,假设为./test/test2
。然后,如果我在test2
下执行某些操作,例如删除文件或添加文件,则很奇怪没有发生任何事件。
似乎test2
上没有手表。
这是一个错误还是我只是以错误的方式使用?
答案 0 :(得分:1)
man 1 inotifywait
,您将获得以下输出:
-r, - recursive
观察作为参数传递的任何目录的所有子目录。手表将以递归方式设置为无限深度。不遍历符号链接。还将监视新创建的子目录 警告:如果在观察大树的根目录时使用此选项,则可能需要很长时间才能建立所有inotify监视,并且此时不会接收事件。此外,由于每个子目录将建立一个inotify手表,因此可能会达到每个用户的最大inotify手表数量。默认最大值为8192;可以通过写入/ proc / sys / fs / inotify / max_user_watches来增加它。
默认情况下,inotifywait
不会监控子目录,因此您需要-r, --recursive
选项来强制执行此操作。所以你需要的命令是这样的:
inotifywait -rm test
答案 1 :(得分:-1)
inotify手表不是递归的。 (也就是说,如果您打算进行深层次通知,则每个目录需要一个。)