动态更改 Inotify 的监视目录

动态更改 Inotify 的监视目录

提前感谢任何帮助!

我已经设置了一个 inotifywait 脚本来监控某些应用程序的配置更改。我正在创建所有要监视的目录;但是,如果有新应用程序部署,则它不会被 glob 拾取。

inotifywait -m -e close_write,delete /apps/*/etc |
while read eventdir eventlist eventfile
do
    # do work
done

问题是,当有新应用程序部署到 时/apps,监视的 globinotifywait不包括/apps/new_app/etc/。 有没有办法动态更新此 glob 或实现相同的目标?

如果您需要任何说明,请告诉我!

答案1

我找不到一个很棒的方法来做到这一点。我最终做的是创建第二个脚本来监控 中的新应用程序/apps/。当它发现新应用程序时,它会重新启动问题中的脚本,以便它具有准确的文件全局变量

答案2

inotifywait -mr -e close_write,delete /apps/*/etc |

while read eventdir eventlist eventfile do # 完成工作

添加 -r 标志进行递归

答案3

原料:

  • man inotifywait告诉我们监视列表可以提供--fromfile <watchlist-file>
  • 该命令entr可以根据对任何给定文件的修改来触发实用程序

要使用以上信息解决您的问题:

  1. 把所有要监视的目录放在一个文件中,比如WATCHLIST=/tmp/watchlist
  2. inotify在您发布的管道中替换为:entr -ar inotifywait -m -e close_write,delete --fromfile /_ <<< "${WATCHLIST}"
  3. 根据需要修改监视列表文件 - 添加要监视的新文件夹或删除/编辑现有文件夹sed -i <cmd> "${WATCHLIST}"

相关内容