Inotifywaitを使用して同時に複数のファイルを処理する

Inotifywaitを使用して同時に複数のファイルを処理する

私は私たちの会社のための特別なプログラムを書いています。

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

おすすめ記事