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

发布于 2021-12-04 13:00:11 字数 1772 浏览 756 评论 1

我的需求:

在使用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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清风夜微凉 2021-12-05 10:12:08

我也遇到这种问题,目前还没找到解决办法,请问这个解决了吗

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文