私は私たちの会社のための特別なプログラムを書いています。
inotify-toolsのInotifywaitを使用して特定のフォルダ内の新しいエントリを監視しています。新しいファイルが表示されたら、gpgを使用して暗号化し、さらに処理するために別のフォルダに移動します。
単一ファイルの場合はうまくいきますが、問題があることがわかりました。他のファイルの処理中に新しいファイルが入ると、そのファイルは無視され、intotifywaitはそのファイルを処理しないため、そのフォルダに閉じ込められます。複数のファイルを同時に処理する方法はありますか?
これは私のコードです。
ソース=/BRIO/QPC/conclu01/Criptografar 出力=/BRIO/QPC/conclu01/GPG 完了=/BRIO/QPC/conclu01/結論 本当ですが。 inotifywait -e create -e Moving_to -e close_write -e Moving_from $origin --Exclude ".*(\.filepart|gpg|sh)"|dir イベントファイルを読み込むとき する エコ$イベント if [ "$event" == 'CLOSE_WRITE,CLOSE' ] || ["$event" == "MOVED_TO" ] || [ "$event" == "作成" ] それから echo "$origin/$file ファイルを見つけて GPG を起動します" 睡眠5 gpg --encrypt --recipient Lucas --output "$output/$file.gpg" "$origin/$file" echo "$file ファイルが $output/$file.gpg で正常に暗号化されました。" mv -f "$origin/$file"$完了 echo "$origin/$file ファイルが移動されました" フィリピン諸島 完璧 完璧
答え1
繰り返し実行せず、inotifywait
モニタモードで一度実行した後、出力を読みます。
inotifywait -m ... |
while read dir event file ; do
...
done