Bash

使用 Inotifywait 同時處理多個文件

  • November 11, 2022

我正在為我的公司編寫一個特殊程序。

通過使用 inotify-tools 中的 Inotifywait,我正在查看新項目的特定文件夾,並且一旦出現新文件,它將使用 gpg 加密並移動到另一個文件夾以進行進一步處理。

對於單個文件,它工作正常,但我注意到一個問題:當一個新文件進入而另一個正在處理的文件時,他被忽略並且 intotifywait 不處理它,所以他一直卡在文件夾中。有沒有辦法同時處理多個文件?

這是我到目前為止的程式碼:

起源=/BRIO/QPC/conclu01/Criptografar
輸出=/BRIO/QPC/conclu01/GPG
完成=/BRIO/QPC/conclu01/Concluido


雖然是真的;做
inotifywait -e create -emoved_to -e close_write -emoved_from $origin --exclude ".*(\.filepart|gpg|sh)" | 同時讀取 dir 事件文件
做
迴聲$事件
       
如果 [ "$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 文件被移動"
菲
完畢
完畢

不要inotifywait重複執行,在監控模式下執行一次並從其輸出中讀取:

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

引用自:https://unix.stackexchange.com/questions/724480