Macos launchd不';不要启动我的守护进程

Macos launchd不';不要启动我的守护进程,macos,launchd,daemons,Macos,Launchd,Daemons,我试图弄明白为什么我的守护进程不能自动启动(在Mac10.8.3上)。但是,它在其他机器上运行良好。这是我在/Library/LaunchDaemons下的列表/ <?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 ve

我试图弄明白为什么我的守护进程不能自动启动(在Mac10.8.3上)。但是,它在其他机器上运行良好。这是我在/Library/LaunchDaemons下的列表/

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

标签
com.MyApp.tmsm.launcher
程序参数
/库/应用程序支持/MyApp/tmsmLauncher
运行负荷
持久连接
星际旅行社
60
我在
/var/log/system.log
中没有看到任何错误消息。我已经检查了我的
守护进程的
权限
所有者
。如果我将plist放在
/System/Library/LaunchDaemons/
下,它可以在
重新启动后启动。但这对我来说不是个好办法。如果我使用“
launchctl load/Library/LaunchDaemons/com.MyApp.tmsm.launcher
”,它工作得很好。如果我安装了其他商业软件,它是一个守护进程,并且在
/Library/LaunchDaemons/
下有一个plist,那么它也无法启动

系统似乎没有加载
/Library/LaunchDaemons/
下的任何plist。我还尝试使用命令“
launchctl log-leveldebug
”打开launchctl调试级别,但重新启动后没有更多消息。重新启动后是否重置调试级别?我可以检查其他日志或配置吗


谢谢。

尝试使用-w参数加载它:
sudo launchctl load-w/Library/LaunchDaemons/blablabla.plist
。看起来禁用的密钥中存在问题。有关详细信息,请参见
man launchctl


如果这不起作用,我建议您在守护进程中启用一些日志文件,以查看它是否启动(可能只是立即退出?

我找到了根本原因…这太愚蠢了。。。
我的plist在/Library/LaunchDaemons/下的权限是正确的。但是,/Library/LaunchDaemons/的权限修改为755。这就是为什么在/Library/LaunchDaemons/下注册的任何守护进程都无法自动加载…

请查看作业定义文件。launchd(8)将拒绝加载作业,如果:-作业定义文件可由
组写入
其他
-作业定义不属于
根用户(或作业定义中指定的用户)-作业定义文件名不以
结尾。plist
定义文件的权限和所有者正确
-rw-r--r--1根控制盘
手动加载带/不带-w参数的我的守护进程可以。系统启动时无法自动加载我的守护进程。我的守护进程在开始时确实有日志,但没有显示。我还使用了
launchctl list
来检查我的守护程序是否已加载,并且在列表中看不到我的守护程序。我在
/var/db/launchd.db/com.apple.launchd/overrides.plist
中检查了禁用的密钥,但是我在这个plist上看不到我的守护进程。在系统启动时守护进程将自动启动之前,您需要首先使用-w参数加载它。/Library/LaunchDaemons在我的系统上的权限是755,它工作正常。我自己没有更改它,所以我假设它是默认值。在10.11上,它们默认为644。目录必须有
x
位,所以644没有意义