inotifywait没有按预期工作

时间:2016-03-05 14:56:01

标签: linux bash shell

我想编写一个脚本,当文件在特定目录(或子目录)中发生更改(意味着内容更改或文件被同名文件覆盖)时触发某些代码。当我运行我的代码并更改文件时,它似乎每次运行两次,因为我得到两次echo输出。有什么我想念的吗?

while true; do
   change=$(inotifywait -e close_write /home/bla)
   change=${change#/home/bla/ * }
   echo "$change"
done

当我在指定目录的子目录中更改某些内容时,它也没有做任何事情。

在更改指定目录中的文件后,outpoot看起来像这样:

Setting up watches.
Watches established.
filename
Setting up watches.
Watches established.
filename
Setting up watches.
Watches established.

1 个答案:

答案 0 :(得分:1)

我无法重现脚本输出两次消息。你确定你不会两次(在后台)运行吗?或者您使用编辑器更改文件?当文件打开时,某些编辑器会在编辑的文件旁边放置一个备份文件。这可以解释您看到两条消息。

对于递归目录观看,您需要将选项-r传递给inotifywait。但是,您不应该在超大文件系统树上运行它,因为inotify监视的数量是有限的。您可以通过

获取系统的当前限制
cat /proc/sys/fs/inotify/max_user_watches