inotifywait 스크립트로 인해 재귀 루프가 발생함

inotifywait 스크립트로 인해 재귀 루프가 발생함

FTP 업로드 디렉터리를 모니터링하고 새 파일이 업로드될 때마다 올바른 권한을 설정하는 inotifywait 스크립트가 있습니다.

원격 클라이언트가 잘못된 파일 모드를 강제하고 ftp 서버가 chmod 명령을 허용하지 못하게 하면 원격 클라이언트가 가짜 오류를 뱉어내기 때문에 이렇게 합니다.

그래서 내 최후의 수단은 inotify 스크립트이지만 이는 또 다른 문제를 야기합니다.

#!/bin/bash
inotifywait -mrq -e ATTRIB --format "%w%f" /home/user/upload/ | while read FILE; do 
  if [[ -f "$FILE" ]];then
    chown user:apache "$FILE" && chmod 640 "$FILE"
  fi
done

그래서 여기서 잘못된 점은 일단 파일이 클라이언트에 의해 업로드되고 chmodded되면 ATTRIB 옵션이 트리거되지만(예상대로) 내 스크립트의 결과 chmod로 인해 ATTRIB 옵션이 다시 트리거된다는 것입니다... 재귀 루프를 발생시킵니다.

이 루프를 방지하는 자체 작업을 무시해야 함을 inotifywait가 명확히 할 수 있는 방법이 있습니까?

답변1

inotifywait을 기다리는 대신 -e attrib을 기다려야 합니다 -e modify.

   modify
   A watched file or a file within a watched directory was written to.

   attrib
   The metadata of a watched file or a file within a watched directory was modified.  This includes timestamps,  file permissions, extended attributes etc.

관련 정보