使用Inotifywait同时处理多个文件

使用Inotifywait同时处理多个文件

我正在为我的公司编写一个特殊的程序。

通过使用 inotify-tools 中的 Inotifywait,我正在监视特定文件夹中的新项目,一旦出现新文件,它将使用 gpg 加密并移动到另一个文件夹以进行进一步处理。

对于单个文件,它工作正常,但我注意到一个问题:当一个新文件进入而另一个文件正在处理时,他会被忽略,并且 intotifywait 不会处理它,所以他会卡在文件夹中。有没有办法同时处理多个文件?

这是我到目前为止的代码:

来源=/BRIO/QPC/conclu01/Criptografar
输出=/BRIO/QPC/conclu01/GPG
完成=/BRIO/QPC/conclu01/Concluido


虽然是真的;做
    inotifywait -e create -e moving_to -e close_write -e moving_from $origin --排除“.*(\.filepart|gpg|sh)”|在读取 dir 事件文件时
            回显$事件
        
        if [ "$event" == 'CLOSE_WRITE,CLOSE' ] || [“$event”==“MOVED_TO”] || [“$事件”==“创建”]
            然后
                    echo "找到文件 $origin/$file, 启动 GPG"
            睡5
            gpg --encrypt --recipient Lucas --output "$output/$file.gpg" "$origin/$file"
            echo "文件 $file 已成功加密为 $output/$file.gpg"
            mv -f“$origin/$file”$finished
            echo "文件 $origin/$file 已移动"
        完毕
完毕

答案1

不要inotifywait重复运行,在监视器模式下运行一次并从其输出中读取:

inotifywait -m ... |
    while read dir event file ; do
        ...
    done

相关内容