중복 가능성 :
OS X 및 Ubuntu에서 실시간으로 파일 시스템보기
OSX에서 로컬 디렉토리를 모니터링하는 효율적인 방법을 찾고 있는데 해당 디렉토리에서 파일이 변경된 경우 bash 스크립트를 실행하여 파일을 github에 커밋하십시오.
파일 변경을 위해 디렉토리를 모니터링 한 다음 bash 스크립트와 같은 동작을 트리거하는 권장 도구가 있습니까?
답변
저장소에서 fswatch 사용
fswatch . 'git commit -avm "snapshot at ${date}"'
이 간단한 예제는 이미 리포지토리에있는 파일의 변경 사항 만 포착합니다.
답변
한 가지 옵션은 launchd를 사용하는 것입니다. 이와 같은 속성 목록을로 저장하고 로그 아웃 한 후 다시 ~/Library/LaunchAgents/com.superuser.445907.plist
로드하십시오 launchctl load ~/Library/LaunchAgents/com.superuser.445907.plist
.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.superuser.445907</string>
<key>Program</key>
<string>/Users/username/script</string> <!-- ~/ doesn't work -->
<key>WatchPaths</key>
<array>
<string>/Users/username/Folder/</string>
</array>
<key>ThrotteInterval</key>
<integer>0</integer> <!-- run at most every 0 seconds, by default 10 -->
</dict>
</plist>
시작은 파일을 원자 적으로 저장하거나 파일을 저장할 때마다 삭제하고 다시 작성할 때만 변경 사항을 등록합니다. 대부분의 OS X 응용 프로그램은 기본적으로 원자 저장을 수행하지만 예를 들어 TextMate 및 vim은 자동 저장을 수행하지 않습니다. 감시 폴더의 하위 폴더 변경 사항이 감지되지 않습니다.
launchctl unload $path && launchctl load $path
plist에 변경 사항을 적용합니다.
참조 man launchd
및 man launchd.plist
더 많은 정보를 얻을 수 있습니다.