특정 "트리거 파일" 생성을 어떻게 모니터링할 수 있나요?

특정 "트리거 파일" 생성을 어떻게 모니터링할 수 있나요?

start특정 디렉터리에 호출된 파일이 생성될 때 응용 프로그램을 실행하는 셸 스크립트를 만들어야 합니다 .

특정 이름을 가진 파일이 특정 위치에 생성될 때까지 기다리는 쉘 스크립트를 어떻게 작성합니까?

답변1

inotifywait귀하의 시스템 에 다른 사람들이 언급한 것처럼(대부분의 Linux 배포판, OpenBSD 및 기타) 해당 시스템이 있는 경우 리소스를 가장 적게 사용하는 방법은 다음을 사용하는 것입니다 inotifywait.

rm -f yourdirectory/start
while [ "$(inotifywait -e create -q --format %f yourdirectory)" != "start" ]; do :; done
yourcommand

이렇게 하면 start파일이 제거된 yourdirectory다음 실행되기 전에 파일이 생성될 때까지 기다립니다 yourcommand. -e create생성 이벤트에만 관심이 있다고 지정하고, 진단 메시지를 -q원하지 않는다고 지정하고 inotifywait, --format %f생성된 파일의 이름만 출력에서 ​​보도록 지정합니다.

하나도 없으면 inotifywait다음도 작동하며 최대 지연 시간은 1초입니다.

rm -f yourdirectory/start
while [ ! -e yourdirectory/start ]; do sleep 1; done
yourcommand

답변2

나는 "inoticoming" 도구를 사용하여 디렉토리의 변경 사항을 모니터링하는 것을 좋아합니다. 로깅 및 pid 파일 생성 기능이 있습니다. 추가 "작업 옵션"을 사용하여 변경 명령을 실행할 수 있습니다. 이는 매우 좋습니다. :)

"fileschanged"라는 도구가 기억나지만 한 번도 사용한 적이 없습니다. 한 번 살펴볼 가치가 있을 것 같습니다. -어치

관련 정보