【问题标题】:How to determinate if agent/daemon has disabled or enabled state on OSX 10.6?如何确定代理/守护程序在 OSX 10.6 上是否已禁用或启用状态?
【发布时间】:2013-07-31 13:37:36
【问题描述】:

我需要确定在我的 OSX 上禁用了哪些代理和守护程序。每个进程都有带参数的 plist 文件。我认为“禁用”键对此负责。但并非所有代理/守护进程都具有此值。因此,如果属性列表不包含此参数,是否意味着它已禁用或启用?我没有找到有关此项目默认值的任何信息。

请提供证明它的苹果文档的参考。

【问题讨论】:

    标签: objective-c macos daemon


    【解决方案1】:

    每个 LaunchDaemon 文件中的“已禁用”键可以被 /private/var/db/launchd.db/com.apple.launchd/overrides.plist 中的条目覆盖,并且 /private 中的 LaunchAgents 也有类似的系统/var/db/launchd.db/com.apple.launchd.peruser.userID/overrides.plist。我认为 Apple 没有在任何地方记录这一点,这意味着您不需要直接与这些文件进行交互,只需使用 launchctl。这也意味着它们可能会发生变化(即它并不总是以这种方式工作,并且可能会在更高版本的 OS X 中更改,恕不另行通知)。此外,LaunchDaemons 的文件只能由 root 读取。

    【讨论】:

    • 我以 root 身份启动我的应用程序。所以我可以读取所有 plist 文件。我只需要知道 plist 是否没有“禁用”键,这意味着它是默认禁用还是启用?
    • 如果“Disabled”键不存在,作业将默认启用(即“Disabled”的默认值为false)。
    • Gordon Davisson,文档中是否有任何参考资料可以证明这一点?
    • 不,尽管它隐含在 man page 的描述中:“已禁用 此可选键用于提示 launchctl(1),它不应该将这个作业提交给 launchd 时加载一个或多个工作。” -- 暗示该键可以禁用作业,但不必显式将其设置为 false 以启用作业。
    猜你喜欢
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 2014-10-14
    相关资源
    最近更新 更多