fswatch: 파일 생성 권한 업데이트

fswatch: 파일 생성 권한 업데이트

디렉터리가 있고 새 파일이나 디렉터리가 생성될 때 해당 권한을 업데이트하고 싶습니다.

현재 이 작업을 수행했는데 fswatch새 파일/디렉토리 생성이 감지되었지만 권한을 변경하면 스크립트가 다시 호출되어 무한 루프가 발생합니다.

#!/bin/bash

fswatch -0 -r --event Created /path/to/my/directory \
| while read -d '' file; do \
    echo "file: ${file}"

    if [[ -d ${file} ]] ; then
      chown xxxx:staff "${file}"
      chmod 770 "${file}"
    elif [[ -f ${file} ]]; then
      chown xxxx:staff "${file}"
      chmod 775 "${file}"
    fi
done

이 스크립트는 macOS High Sierra용입니다.

답변1

macOS 시스템에서 그대로 시도해 보았는데 fswatch -r /path/to/my/directory결과는 다음과 같습니다.무엇 때때로 이벤트를 보고하는 원인 chmod및 호출입니다( 및 제외 ). 심지어 fswatch를 시작하기 전에 테스트 파일을 삭제하는 등의 문제 도 발생했습니다 .chownCreatedOwnerModifiedIsFileRemoved

Linux에서 실행하면(inotify 모니터 사용) 이 동작이 발생하지 않습니다. chmod는 AttributeModified이벤트 하나만 발생하고 다른 이벤트는 발생하지 않습니다.

이것은 나에게 매우 놀라운 일이며 여러분이 관찰한 (그리고 내가 재현할 수 있었던) 동작을 설명합니다. 이것은 분명히 문서화된 동작입니다. fswatch GitHub 저장소에는 이 문제에 대한 "고칠 수 없음" 질문이 종료되었습니다.:

짧은 시간 내에 동일한 파일에서 다양한 이벤트가 발생하는 경우 여러 이벤트가 동일한 이벤트에 대한 정보를 전달할 수 있습니다. (...) fswatch그것에 대해 아무것도 할 수 없습니다.

위에 링크된 문제 페이지에서도 몇 가지 해결 방법을 제안하지만 그 중 어느 것도 그다지 만족스럽지 않습니다. 아마도 귀하의 경우 chmod와 chown을 각각 적용하기 전에 기존 권한과 소유권을 확인하는 것이 도움이 될 것입니다.

관련 정보