关于获取inotify-tools的输出文件名问题
我的需求:
在使用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在捕获一个事件后继续监听不要退出。
谢谢啦~~~~~~~
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我也遇到这种问题,目前还没找到解决办法,请问这个解决了吗