在 inotifywait 人的变化中陈述了以下内容
-r, --recursive 监视作为参数传递的任何目录的所有子目录。手表将递归设置到无限深度。不遍历符号链接。新创建的子目录也将被监视。
警告:如果你在监视大树的根目录时使用该选项,可能需要一段时间才能建立所有 inotify监视,并且在此期间不会收到事件。此外,由于每个子目录将建立一个 inotify 手表,因此可能会达到每个用户的最大 inotify 手表数量。默认最大值为 8192;可以通过写入 /proc/sys/fs/inotify/max_user_watches 来增加它。
我认为这意味着每次inotifywait
调用时,大型目录都会有延迟。因此,像这样使用监视功能不断监视一个大目录
inotifywait -m /home/user/Documents
比像这样手动循环目录更有效(来自手册页中的示例)
while inotifywait /home/user/Documents; do
#Do Something for each file change
done
作为 while 循环的每次迭代,您必须再次设置 inotifywait。但是使用第一个选项,我无法根据回报执行。理想情况下,我想要的是这样的回调函数
inotifywait -m --callback ./callback.sh /home/user/Documents
所以callback.sh
每次都被调用,返回值为inotifywait
. 我将如何实现这一点?