我正在为我的公司编写一个特殊的程序。
通过使用 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