Bash
使用 Inotifywait 同時處理多個文件
我正在為我的公司編寫一個特殊程序。
通過使用 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