디렉토리 수정시 스크립트 실행


0

들어 launchd있다 WatchPaths(좀 더 구체적인 경우의 QueueDirectories) 경로의 변경을 모니터링한다. 그러나 디렉토리 인 경우 디렉토리의 작성 / 삭제 만 인식합니다. 즉, 포함 파일의 컨텐츠가 변경되거나 하위 디렉토리가 변경되지 않습니다 ( 여기 참조 ).

(Linux의 경우 좋은 솔루션이 여기에 나열되어 있습니다 .)

launchd할 수없는 것 같아요 ?

launchdFSEvents (또는 kqueue, fam 또는 gamin ?)를 통해이 기능으로 확장 되는 항상 실행되는 자체 데몬을 작성할 수 있습니다.

아니면 기존 프로젝트 / 도구가 있습니까?

답변:


0

launchd의 디렉토리에서 파일에 대한 변경 사항을 직접 모니터링해야합니다 WatchPaths.

이 plist를 ~/Library/LaunchAgents/test.plist다음 과 같이 저장하십시오 .

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>Label</key>
  <string>test</string>
  <key>ProgramArguments</key>
  <array>
    <string>say</string>
    <string>a</string>
  </array>
  <key>WatchPaths</key>
  <array>
    <string>~/Documents/</string>
  </array>
</dict>
</plist>

그런 다음 launchctl load ~/Library/LaunchAgents/test.plist아래에서 일부 파일을 실행 하고 수정하십시오 ~/Documents/. 원자 저장을 수행하지 않고 파일을 수정하거나 수정 시간이 ~/Documents/변경되지 않은 경우에도 프로그램을 실행해야합니다 .

참고 launchd감시 디렉토리의 하위 디렉토리의 변화를 모니터링하지 않습니다. Tilde 확장은 WatchPaths기본적으로 인수에서 작동 하지만 파일 이름 확장을 활성화하는 방법은 없습니다. ( EnableGlobbing에만 적용됩니다 ProgramArguments.)


내 링크에 따르면 그렇지 않습니다. 그러나 그것이 가능하더라도 모든 콘텐츠, 즉 하위 디렉토리를 모니터링하는 솔루션을 원하기 때문에 여전히 유용하지 않습니다.
Albert
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.