如何检查是否设置了启动服务的 OS X“禁用”标志?

Cha*_*ffy 8 mac-osx launchd

根据launchctl(强调我的)手册页:

   -w 覆盖 Disabled 键并将其设置为 false。在以前的版本中,此选项会修改配置文件。现在禁用密钥的状态存储在磁盘上的其他地方。

由于禁用标志的当前状态不再在.plist文件本身中设置,因此检查Disabled密钥不再是判断服务是否会在下次启动时运行的准确方法。

这个“磁盘上的其他地方”在哪里?更重要的是(更重要的是),如何检查是否设置了此标志?

另外,是否可以将服务设置为在下次启动时运行而不强制它立即启动(如launchctl load -w /Library/LaunchDaemons/my-service.plist)?

Gor*_*son 8

禁用现在(从 10.6.x 开始)存储在 /private/var/db/launchd.db/com.apple.launchd/overrides.plist 中,条目如下:

<key>com.apple.AppleFileServer</key>
<dict>
    <key>Disabled</key>
    <true/>
</dict>
Run Code Online (Sandbox Code Playgroud)

您可以解析此文件以查看哪些启动项被覆盖,但该文件仅设置为 root 访问权限(“-rw------- 1 root wheel”),并且无法保证 Apple 不会更改方式东西再次存储在 10.7 ...

另外,我不知道有什么方法可以让现有的启动项在下次启动时加载而不立即加载。(如果它是一个新项目,没问题:确保其中包含 Disabled=false,并将其放入 /Library/LaunchDaemons。)

  • 看起来它在 10.11 上移动了 :( 对 10.11 上更新的答案有什么想法吗? (2认同)