我已经创建了一个 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>
然后您应该能够检查这些文件,并希望获得有关发生了什么事情的更多信息。