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

관련 정보