提前感谢任何帮助!
我已经设置了一个 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
可以根据对任何给定文件的修改来触发实用程序
要使用以上信息解决您的问题:
- 把所有要监视的目录放在一个文件中,比如
WATCHLIST=/tmp/watchlist
inotify
在您发布的管道中替换为:entr -ar inotifywait -m -e close_write,delete --fromfile /_ <<< "${WATCHLIST}"
- 根据需要修改监视列表文件 - 添加要监视的新文件夹或删除/编辑现有文件夹
sed -i <cmd> "${WATCHLIST}"