Bash: 파일 생성을 폴링하고 종료 시 종료합니다.

Bash: 파일 생성을 폴링하고 종료 시 종료합니다.

종료 신호를 포착하고 종료하는 스크립트를 작성하려고 합니다. 일반적인 bash 트랩 접근 방식을 사용하는 대신 10초마다 파일 생성을 모니터링하고 종료하기 전에 일부 항목을 정리하고 싶습니다.

내가 시도한 것은 다음과 같습니다.

poll_time=10 // poll every 10 seconds
((term_time=$SECONDS+240)) // monitor until 4 min from current script time exec

while (( $SECONDS < $term_time)) do
    if [[ -r $some_path/file.txt ]]; then
        cleanup_function
        exit
fi
sleep ${poll_time}
done

//if file doesnt exit continue with below code
//blah blah blah ....

더 좋은 방법이 있나요? 위의 코드 줄이 작동할까요?

답변1

inotifywaitfrom이 inotify-tools필요한 것입니다(적어도 살펴보세요). 다음과 같은 줄은 스크립트에서 원하는 것과 동일한 작업을 수행합니다.

inotifywait -e create --timeout 240 "${some_path}/file.txt" && { cleanup_function; exit ; }

차이점 inotifywait은 이벤트 기반 방식으로 작동하므로 폴링이나 수면이 필요하지 않다는 것입니다.

관련 정보