실행 된 WatchPaths는 변경 사항에 응답하지 않고 마운트 된 파일 및 디스크에만 응답합니다.


0

Macmini 서버에서 Snowleopard 10.6.8을 실행 중이며 파일이나 폴더가 지정된 폴더에서 삽입 / 편집 또는 삭제 될 때마다이 서버가 스크립트를 실행하기를 원합니다. 시스템이 켜져 있지만 로그인하지 않은 상태에서 네트워크를 통해이 동작을 수행하고 싶기 때문에 LaunchDeamon으로 설정된 .plist 스크립트를 만들었습니다. .plist는 다른 모든 .plists와 동일한 권한을 갖습니다. "시스템 : 읽기 및 쓰기. 휠 및 모든 사람 : 읽기 전용"

테스트 케이스로 lingon 2.1의 도움을 받아 다음 스크립트를 설정했습니다. 이 스크립트는 Desktop ( <WatchPaths>)이 변경 사항을 감지하거나 무언가가 마운트 될 때 ( ) growltime.scpt를 실행해야합니다 <StartOnMount>.

<?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>com.watchfolder.growltime</string>
    <key>ProgramArguments</key>
    <array>
    <string>osascript /Users/admin/growltime.scpt</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StartOnMount</key>
    <true/>
    <key>WatchPaths</key>
    <array>
    <string>/Users/admin/Library/Desktop/</string>
    </array>
</dict>
</plist>

이제 이상한 점은 디스크를 마운트하거나 설치 파일을 마운트 할 때만 growltime.scpt가 실행 <StartOnMount>되지만 파일 또는 폴더가 데스크탑에서 삽입 / 편집 또는 삭제 된 경우에는 그렇지 않습니다 ( <WatchPaths>).

내가 여기서 뭘 잘못하고 있니?

답변:


2

우선 ProgramArguments의 각 단어가 별도의 문자열이 아닌 한 전혀 작동하지 않아야합니다. 이 대신

<key>ProgramArguments</key>
<array>
<string>osascript /Users/admin/growltime.scpt</string>
</array>

그것은해야한다

<key>ProgramArguments</key>
<array>
        <string>osascript</string>
        <string>/Users/admin/growltime.scpt</string>
</array>

테스트 할 때 이전 버전의 에이전트가로드 되었습니까? 속성 목록을로 다시로드 할 수 있습니다 launchctl unload ~/Library/LaunchAgents/$id.plist && launchctl load ~/Library/LaunchAgents/$id.plist.

데스크탑 경로에 오류가 있습니다.

<key>WatchPaths</key>
<array>
<string>/Users/admin/Library/Desktop/</string>
</array>

고마워 Lri! 내 데스크탑 경로를 더 잘 정리해야한다고 생각합니다 : -x
Jroen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.