我有一個perl腳本(實際上它也成功運行在Linux上,我也試圖運行在Linux上)通過在OSX-10.8.3上啓動。我在編寫plist文件方面相當缺乏經驗,所以我希望這是我忽略的一些愚蠢的東西。我應該注意到它通過cron在OSX上運行良好,所以我遇到的問題是特定於launchd的。但是,當我嘗試通過launchd運行它時,它在某些perl'系統'調用中出錯,聲稱「沒有這樣的文件或目錄」。這裏的plist中:perl腳本從launchd裏面運行失敗,「系統」命令沒有「沒有這樣的文件或目錄」
<?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>launched.sysinv</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/perl</string>
<string>/Users/lfriedman/cuda-stuff/sw/gpgpu/build/scripts/testing/sysinv.pl</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>14</integer>
<key>Minute</key>
<integer>30</integer>
</dict>
<key>UserName</key>
<string>lfriedman</string>
<key>AbandonProcessGroup</key>
<true/>
<key>StandardOutPath</key>
<string>/tmp/sysinv.out</string>
<key>StandardErrorPath</key>
<string>/tmp/sysinv.err</string>
</dict>
</plist>
當我加載腳本 「launchctl負載-w launchd.sysinv.plist」,我看到/var/log/system.log以下錯誤:
com.apple.launchd[1] (launched.sysinv[51676]): Exited with code: 1
/tmp/sysinv.out具有與每個調用下面的輸出:
system(/usr/sbin/system_profiler -detailLevel full &> system_profiler.txt) failed: No such file or directory
/tmp/sysinv.err具有單個誤差(與每個調用):
sh: system_profiler.txt: Permission denied
我很困惑什麼是導致這些錯誤。再次,手動運行perl腳本(如'lfriedman'用戶)或通過cronjob(由'lfriedman'擁有)運行正常,沒有錯誤。
謝謝,那就是訣竅。 – netllama