2015-07-03 62 views
10

在OS X Yosemite(10.10)上,是否有任何方法可以删除服务的启用/禁用覆盖设置?launchctl - 删除启用/禁用覆盖

例如,要永久禁用不存在的服务“试验”的根,这样做:

sudo launchctl disable user/0/test 

检查,它已被添加到伤兵名单:

sudo launchctl print-disabled user/0 

结果:

disabled services = { 
    "test" => true 
} 
login item associations = { 
} 

现在,我该如何从已禁用的服务列表中删除“测试”?

(我知道我可以启用它,但我只是想完全删除的条目。)

注:

如果我重新启动我的电脑,我看到了“测试”超控被添加到一个launchd disabled文件:

sudo cat /var/db/com.apple.xpc.launchd/disabled.0.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>test</key> 
    <true/> 
</dict> 
</plist> 

我试图运行此命令从.plist文件手动删除它:

sudo /usr/libexec/Plistbuddy /var/db/com.apple.xpc.launchd/disabled.0.plist -c Delete:test 

这并从文件中删除它,但它只是再回来,当我重新启动我的电脑。有任何想法吗?

+0

以下是对类似主题的讨论:http://comments.gmane.org/gmane.comp.sysutils.launchd.devel/117 –

回答

5

我刚刚在优胜美地解决了LaunchControl的这个问题... 它必须具有令人惊叹的GUI,用于在OSX上管理守护进程和代理。 它有很多的功能... 所以只是木桶安装

$ brew cask install launchcontrol 

然后在左边的列表中找到您的服务(下使用代理或全局守护程序或任何...)。

选择它,并在主菜单中去工作=>覆盖禁用键=>总是假

然后重新启动并检查... 应该努力!

+1

您所描述的是如何使用LaunchControl永久启用服务。这不是海报问的问题。他在找的是Job> Override Disabled Key> Do not Override,这在OSX Yosemite上还没有工作。 – LCC

+1

@LCC我把这个bug /我的解决方案报告给了[email protected],LaunchControl的开发人员(其中有人) –

+1

@LCC BTW,开发人员报告说“不会修复”/“无法修复”状态re:这个_un-feature_。 –

5

好像曾经是在overrides.plist改变了信息的本质..

根据launchctlman页的‘遗产’load/unload子命令..

-w覆盖Disabled键,并分别将其设置为false或true以用于加载和卸载子命令。在以前的版本中,该选项会修改配置文件。现在,Disabled键的状态存储在其他磁盘上的某个位置,该位置可能不是由launchd以外的任何进程直接操作的位置。

我想现在...信息存储在/var/db/com.apple.xpc.launchd目录中。

我的内容包含几个plists。

config disabled.0.plist disabled.200.plist ... disabled.501.plist ... disabled.migrated loginitems.0.plist ... loginitems.501.plist ...

在这种情况下,文件名是指不同用户的ID(5010)。更改这些文件中的密钥(显然是root)应该使用黑暗霸主launchd删除相应的覆盖项。

如果没有,尝试编辑这些相同的文件,同时启动恢复或其他驱动器 - 所以你可以惹他们,而launchd没有运行/无情地试图成为老板。

+0

'黑暗霸主'发射''...这太好了。散文+1。 – voidnologo

0

我能够做到这一点使用单用户模式。步骤如下:

  1. 关闭计算机。
  2. 启动时,进入单用户模式(Command + S)。
  3. 从命令行输入/sbin/mount -uw /
  4. 根据需要编辑合适的/var/db/com.apple.xpc.launchd/disabled.*.plist文件,删除禁用的项目。
  5. 类型exit