특정 프로세스가 특정 파일에 액세스할 때 알림을 받고 싶은 트리거를 원합니다(예: 스크립트가 실행되어야 함). 내가 올바르게 이해했다면 이것은 작동합니다 inotify
.
파일이 있는 경우 해당 파일을 모니터링하도록 /foo/bar.txt
어떻게 설정합니까 ?inotify
저는 Debian Wheezy와 커널 3.12를 사용하고 있습니다(제 커널은 inotify를 지원합니다)
답변1
사용이 간편함inotify기다려(배포판용 패키지 설치
inotify-tools
):while inotifywait -e close_write myfile.py; do ./myfile.py; done
여기에는 큰 제한이 있습니다. 프로그램이
myfile.py
기존 파일에 쓰는 대신 다른 파일을 대체하면 프로그램myfile
이inotifywait
종료됩니다. 이것이 대부분의 편집자가 일하는 방식입니다.이 제한을 극복하려면
inotifywait
다음을 사용하십시오.while true; do change=$(inotifywait -e close_write,moved_to,create .) change=${change#./ * } if [ "$change" = "myfile.py" ]; then ./myfile.py; fi done
답변2
inotify의 기본 쉘 인터페이스는 다음과 같습니다.inotifywait
~에서inotify-tools
.
파일에 대한 모든 액세스를 모니터링하려면 다음을 수행하십시오.
inotifywait -mq --format '%e' /path/to/file |
while IFS= read -r events; do
/path/to/script "$events"
done
파일에 어떤 일이 발생할 때마다(읽기, 쓰기, 닫기...) 쉼표로 구분된 동시 이벤트 목록과 함께 스크립트가 호출됩니다.