关于获取inotify-tools的输出文件名问题
< 返回列表时间: 2016-08-13来源:开源中国
HDC调试需求开发(15万预算),能者速来!>>>
我的需求:
在使用inotify-tools的inotifywait时候,我希望当一个事件(比如write_close)被触发的时候,就自动执行一个脚本。这个脚本里需要获取发生事件的文件的文件名。
脚本文件:
#!/bin/bash #test echo $1 #update status on webserver #curl http://localhost/update.php?file=$1 > /dev/null
执行命令:

然后修改监视的目录下的文件:

然后inotifywait这边就这这样了:

现在的问题:
1.notify.sh没有获取到inotifywait的输出,即我希望获取的文件名
2.我修改了/web/test.txt之后,inotifywait就立即退出了。而我启动的时候指定了 -m 参数,希望他一直监听


另外,我搜索了网上的资料,一般有2种方式。
一种是将inotifywait的标准输出(包含文件名)通过管道,传递给read file,然后读取这个文件。只是不是read file,而是用自己的nodify.sh来接收,比如这样的

我就是采取的这种方式,但是不知道为什么不行。
还有一种是将inotifywait的标准输出重定向到一个文件中,然后去读取这个文件。比如这种: while inotifywait -e modify /var/log/messages >> ~/temp.txt; do if tail -n1 ~/temp.txt | grep httpd; then kdialog --msgbox "Apache needs love!" fi done


但是我不想采取这种用中转站的方式。


那么问题来了,我怎么才能在自己的脚本里获取到inotifywait的标准输出呢?而且inotifywait在捕获一个事件后继续监听不要退出。
谢谢啦~~~~~~~



热门排行