inotifywait
inotifywait
는 파일 변경을 감지하기 위한 리눅스 명령어입니다.
설치
sudo apt update
sudo apt install -y inotify-tools
사용 예
아래의 예제는 <대상디렉토리>
가 create
되거나 modify
됐을 때 php artisan 명령을 실행합니다.
- -r:
<대상디렉토리>
의 하위 디렉토리도 검사하게 만드는 옵션 - -m: 이벤트를 감지 후 종료되는 기본 설정과 달리 무기한으로 이벤트를 감지할 수 있게하는 옵션
- -e create,modify: 감지 대상 이벤트
inotifywait -r -m -e create,modify <대상디렉토리> | while read PATH ACTION FILE;
do
# 변경 감지 시 실행할 명령 (절대경로 사용 추천)
php artisan save "${PATH}${FILE}"
done
NineBoard에서 파일기반 글 쓰기를 구현하기 위해 사용됐습니다. 데스크탑용 markdown 에디터를 사용하여 문서를 편집 후 저장하면 서버에 SFTP로 문서 파일을 전송하게 되고 inotifywait가 이 파일을 감지하여 DB에 저장합니다.
종료
다음 명령으로 작동 중인 inotifywait 프로세스를 얻은 후 kill 명령으로 종료시킵니다.
ps -ef | grep inotifywait
다음 명령으로 프로세스를 찾는 과정과 종료시키는 과정을 한 번에 처리할 수 있습니다.
kill $(ps aux | grep '[i]notifywait' | awk '{print $2}')