디렉터리의 파일이 생성, 삭제 또는 수정된 경우 inotifywait를 사용하여 명령을 실행하려면 어떻게 해야 합니까?

디렉터리의 파일이 생성, 삭제 또는 수정된 경우 inotifywait를 사용하여 명령을 실행하려면 어떻게 해야 합니까?

이것은 지금까지 얻은 쉘 스크립트입니다. 재귀적으로 확인하고 싶으므로 다음 옵션을 선택하세요.

  • -r재귀를 위해
  • -m모니터링을 위해
  • -e이벤트 알림 및 추적을 위해

나에게 알려지지 않은 이유로 이 접근 방식은 작동하지 않습니다. rm/nano/touch 등을 사용하여 파일을 생성/수정/삭제하고 있으며 터미널에서 스크립트를 실행할 때 특정 작업이 사용되었다는 메시지가 표시됩니다. 작업이 사용된 위치와 파일이 사용된 위치 /home/stephen/ CREATE test입니다. 터치를 사용하여 파일을 만들었습니다.

#!/bin/sh
while inotifywait -mre create,delete,modify /home;do
       echo "test"
done

답변1

나는 inotifywait -m이 종료되지 않아 while 루프가 예상대로 작동하지 않는다고 생각합니다.

while inotifywait -r /home -e create,delete,modify; do { echo "test"; }; done하지만 예상대로 작동해야 합니다.

답변2

루프의 위치를 ​​변경하겠습니다. 프로세스 를 계속 시작할 필요가 없도록 감시 모드를 유지하여 inotifywait이벤트가 누락될 가능성을 제한합니다.

inotifywait -mre create,delete,modify /home | while read dirname events basename;
do
       echo "test $dirname $events $basename"
done

관련 정보