OSX Launchd /Library/LaunchDaemons

OSX Launchd /Library/LaunchDaemons

我已经创建了一个 plist 文件(见下文)并将其粘贴到 /Library/LaunchDaemons/ 中。(它通过运行 VBoxHeadless 的脚本启动虚拟机。)我可以以用户“nobody”的身份启动 plist

sudo -u nobody launchctl load /Library/LaunchDaemons/org.somename.plist

并且它运行良好(launchctl list | grep -i org.somename)。但它不会在启动时自行启动。

<dict>
    <key>Label</key>             <string>org.somename</string>
    <key>Disabled</key>          <false/>
    <key>RunAtLoad</key>         <true/>
    <key>KeepAlive</key>         <false/>
    <key>LaunchOnlyOnce</key>    <true/>
    <key>ProgramArguments</key>
        <array>
            <string>/Users/someuser/somename.sh</string>
            <string>restart</string>
        </array>
</dict>

并且此 plist 是 chown 600 和 chmod root。此外 somename.sh 说

#!/bin/sh
/usr/bin/VBoxHeadless -s somevm

我可能错过了什么?

有没有一份完整的分步检查表,说明如何让程序在启动时运行?我记得在“美好的旧时光”,我将命令放入 /etc/rc.local 中,它就可以工作了……

答案1

我建议在标签前添加以下几行</dict>

<key>StandardErrorPath</key>
<string>/tmp/org.somename.plist.err</string>

<key>StandardOutPath</key>
<string>/tmp/org.somename.plist.out</string>

然后您应该能够检查这些文件,并希望获得有关发生了什么事情的更多信息。

相关内容