首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ubuntu iNotify多文件夹

Ubuntu iNotify多文件夹
EN

Stack Overflow用户
提问于 2013-05-24 21:14:09
回答 2查看 1.2K关注 0票数 0

我已经编写了一个简短的bash脚本,用于为几个文件夹设置iNotify,然后调用Python脚本将创建的文件中的文本上传到for服务。该过程对于列表中的第一个文件夹运行良好,但对于其他文件夹,create事件似乎没有触发。我假设我的脚本结构是正确的。有什么想法吗?代码基本上是:

代码语言:javascript
复制
#!/bin/bash
inotifywait -m --format '%w%f' -e create /Folder1 | while read FILE
do
    echo $FILE
    # upload file
    python /Scripts/UploadFileContents.py 'PAUR' $FILE
done
inotifywait -m --format '%w%f' -e create /Folder2 | while read FILE
do
    echo $FILE
    # upload file
    python /Scripts/UploadFileContents.py 'RACH' $FILE
done
inotifywait -m --format '%w%f' -e create /Folder3 | while read FILE
do
    echo $FILE
    # upload file
    python /Scripts/UploadFileContents.py 'CDR' $FILE
done
inotifywait -m --format '%w%f' -e create /Folder4 | while read FILE
do
    echo $FILE
    # upload file
    python /Scripts/UploadFileContents.py 'CHR' $FILE
done
inotifywait -m --format '%w%f' -e create /Folder5 | while read FILE
do
    echo $FILE
    # upload file
    python /Scripts/UploadFileContents.py 'PRMS' $FILE
done

提前感谢您的帮助。

EN

回答 2

Stack Overflow用户

发布于 2013-05-24 21:16:39

您必须在后台启动inotifywait脚本,因为它们将被阻塞,直到出现更改

票数 1
EN

Stack Overflow用户

发布于 2013-11-08 22:40:08

您的第一个while循环永远不会结束。inotifywait -m是一个永远运行的命令。

最重要的是inotifywait本身是阻塞的,所以把它们都放到一个循环中并删除m标志也不会对你有任何帮助。

对于您来说,最简单的解决方案是将它们分解到多个脚本中。

或者更理想的做法是设置一个接受少量参数的脚本,因为大多数逻辑都是重复的。

您可以用$1替换/Folder1,用$2替换您的第二个变量,然后调用您的脚本,传递您想要监视的文件夹。

代码语言:javascript
复制
./watch.sh /Folder1 PAUR &
./watch.sh /Folder2 RACH &

您可以创建第二个脚本,该脚本调用第一个脚本,其中包含您要监视的所有文件夹,以便为每个文件夹运行一个脚本。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16735853

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档