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