【发布时间】:2013-05-24 11:24:59
【问题描述】:
我试图弄清楚为什么我的守护程序没有自动启动(在 Mac 10.8.3 上)。但是,它在其他机器上运行良好。这是我在 /Library/LaunchDaemons/ 下的 plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.MyApp.tmsm.launcher</string>
<key>ProgramArguments</key>
<array>
<string>/Library/Application Support/MyApp/tmsmLauncher</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<false/>
<key>StartInterval</key>
<integer>60</integer>
</dict>
</plist>
我在/var/log/system.log 中没有看到任何错误消息。我检查了我的daemon 的permission 和owner。如果我将我的 plist 放在/System/Library/LaunchDaemons/ 下,它可以在reboot 之后启动。但这对我来说不是一个好的解决方案。如果我使用“launchctl load /Library/LaunchDaemons/com.MyApp.tmsm.launcher”,效果很好。如果我安装了其他商业软件,它是一个守护进程,并且在/Library/LaunchDaemons/ 下有一个 plist,它也无法启动。
/Library/LaunchDaemons/ 下的任何 plist 似乎都没有被系统加载。我还尝试使用命令“launchctl log level debug”打开launchctl 调试级别,但重启后没有更多消息。重启后调试级别是否重置?我可以检查其他日志或配置吗??
谢谢。
【问题讨论】:
-
请查看作业定义文件。在以下情况下,launchd(8) 将拒绝加载作业: - 作业定义文件可由
group或other写入 - 作业定义不属于root(或作业定义中指定的用户) - 作业定义文件名不以.plist结尾 -
定义文件的权限和所有者正确。
-rw-r--r-- 1 root wheel