关于获取inotify-tools的输出文件名问题

dexline 发布于 2016/08/13 21:00
阅读 1K+
收藏 0

【深圳】源创会:5.26下午、轰趴馆等你”

我的需求:

在使用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在捕获一个事件后继续监听不要退出。

谢谢啦~~~~~~~



加载中
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部