我有一个perl脚本(实际上也可以在Linux和Windows上成功运行),我正在尝试通过OSX-10.8.3上的启动来运行该脚本。 我在编写plist文件方面经验不足,所以我希望这是我忽略的愚蠢的事情。 我应该注意,它可以通过cron在OSX上正常运行,因此我遇到的问题是特定于启动的。 但是,当我尝试通过launchd运行它时,它在某些perl“系统”调用中出错,声称“无此文件或目录”。 这是plist:

<?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 load -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

我很困惑是什么导致这些错误。 同样,手动(以“ lfriedman”用户身份)或通过cronjob(由“ lfriedman”拥有)运行perl脚本也可以正常运行,没有错误。

===============>>#1 票数:1 已采纳

通过plist运行脚本时,系统调用会将其输出(system_profiler.txt)写入没有写权限的目录。 当您手动或cron运行它时,它会写入具有适当权限的目录。

编辑脚本以将输出指向您有权访问的目录,例如/usr/sbin/system_profiler -detailLevel full &> /tmp/system_profiler.txt

  ask by netllama translate from so

未解决问题?本站智能推荐: