【发布时间】:2016-05-13 05:51:51
【问题描述】:
重要的是要立即注意“监视目录的脚本”有很多变体,我意识到 inotify-tools 将是理想的,但是这个特定的脚本被用于监视 vboxsf 文件系统,不幸的是它不转发文件系统通知。这个脚本是用来刷新文件的,所以一个单独的运行守护进程会注意到它。
下面的脚本是一个折衷方案。我花了很长时间处理各种问题
- 正确的
findargs -
find路径和 - 触摸找到的文件的时间。
目标是识别新文件,触摸它,以便单独运行的守护进程注意到它并随后处理它。问题是,它吞噬了 cpu 并且可能是从发现中获取的。我希望帮助找到一种更有效的方法来做到这一点。
虽然没有必要,但要进行全面测试,需要一个挂载的 vboxsf 文件系统,并像这样运行 inotifywait inotifywait -m /watches/watchdir -e attrib
在文件以某种方式刷新之前,主机端的文件创建不会导致客户机端的 ATTRIB 通知——在这种情况下,此 hack 使用“touch”
thedir=/watches/watchdir
touch_me() {
if [ "${newbie}" ]; then
# echo "got this: ${newbie}"
touch -d '-120 seconds' "${newbie}"
fi
}
while true
do
newbie=`find $thedir/* -type f -mmin 0.1 2>/dev/null`
touch_me
done
【问题讨论】:
-
您希望如何立即收到有关现在文件添加到目录的通知?
-
您没有描述创建新文件的内容。特别是,您能否在其中插入一些新的操作/命令?
-
我的答案已经更新,你能看看吗?你怎么看?
-
好像Guard is a viable solution对于共享文件夹:
polling for network drives and VM shared dirs (which don't support inotify) -
感谢 Guard 的提示 在尝试将它安装在 CentOS7 上遇到各种 ruby 问题后,它看起来正是我所需要的但是不知道如何快速解决。没时间了。