2013-02-12 53 views
1

我寫了一個小LaunchAgent要監視更改的文件夾,並在變化的情況下觸發一個shell腳本:OS X LaunchAgent WatchPaths不起作用,有PID和錯誤消息

<?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.myusername.w2</string> 
    <key>ProgramArguments</key> 
    <array> 
    <string>/Users/myusername/Desktop/alert</string> 
    </array> 
    <key>WatchPaths</key> 
    <array> 
     <string>/Users/myusername/Personnel</string> 
    </array> 
    <key>RunAtLoad</key> 
    <true/> 
    <key>WorkingDirectory</key> 
    <string>/Users/myusername</string> 
    <key>StandardErrorPath</key> 
    <string>myjob.log</string> 
    <key>StandardOutPath</key> 
    <string>myjob.log</string> 
    <key>Debug</key> 
    <true/> 
    <key>WaitForDebugger</key> 
    <true/> 

</dict> 
</plist> 
  • 文件名相同標籤
  • 我用launchctl命令來加載和啓動代理
  • 我註銷/登錄我的會議
  • 我請與Launchctl列表和代理有一個正確的PID和狀態代碼爲0
  • 我所有的URL都是絕對

儘管如此,由於預期它不工作:我在監視文件夾中添加的文件和腳本不會被解僱。

創建日誌文件,但空(沒有錯誤?)

如果有人能夠指向正確的方向,將是真棒。

+0

'/ Users/myusername/Desktop/alert'是你想運行的腳本嗎? – chepner 2013-03-21 16:15:26

+0

@chepner是的,它是腳本 – Matthieu 2013-03-22 10:26:55

回答

0

兩件事情來檢查:

  1. 刪除 「了waitForDebugger」 鍵。 (至少,刪除它允許我做一個測試,很明顯,它有一個目的,但我不能建議如何將調試器附加到您的過程。)

  2. 確保/Users/myusername/Desktop/alert是可執行的chmod +x /Users/myusername/Desktop/alert

0

既然你已經在RunAtLoad選項設置爲true,你的腳本launhed你登錄之後。你說你在launchctl list輸出中看到一個PID。這意味着對於launchd,代理已經運行,不需要再次運行它。

我建議刪除RunAtLoad密鑰或使/Users/myusername/Desktop/alert腳本快速退出。您將在launchctl list輸出的PID列中看到-登錄。