我有一个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