首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >launchctl -启用/禁用删除覆盖

launchctl -启用/禁用删除覆盖
EN

Stack Overflow用户
提问于 2015-07-03 12:21:08
回答 4查看 18.2K关注 0票数 16

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

例如,要永久禁用根用户不存在的服务“测试”,请执行以下操作:

代码语言:javascript
复制
sudo launchctl disable user/0/test

检查是否已将其添加到禁用列表中:

代码语言:javascript
复制
sudo launchctl print-disabled user/0

结果:

代码语言:javascript
复制
disabled services = {
    "test" => true
}
login item associations = {
}

现在,如何从禁用服务列表中删除"test“?

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

注:

如果重新启动计算机,则会看到“test”覆盖已添加到launchd disabled文件中:

代码语言:javascript
复制
sudo cat /var/db/com.apple.xpc.launchd/disabled.0.plist

结果:

代码语言:javascript
复制
<?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文件中删除它:

代码语言:javascript
复制
sudo /usr/libexec/Plistbuddy /var/db/com.apple.xpc.launchd/disabled.0.plist -c Delete:test

这确实从文件中删除了它,但是当我重新启动我的计算机时,它就会再次出现。有什么想法吗?

EN

回答 4

Stack Overflow用户

发布于 2015-09-23 03:56:00

似乎过去在overrides.plist中的信息的性质已经改变了。

根据launchctlman页面中的“遗留”load / unload子命令。

-w重写禁用的键,并将其设置为false或true,分别用于加载和卸载子命令。在以前的版本中,此选项将修改配置文件。现在,禁用密钥的状态存储在磁盘的其他位置,在这个位置上,除了launchd之外,任何进程都不可能直接操作。

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

我的东西里有几个夹板。

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

在这种情况下,文件名是指不同用户的id (501是我的,0是根用户)。更改这些文件中的键(显然是根文件)应该使用黑暗霸主launchd删除相应的重写。

如果没有,尝试在启动到恢复时编辑这些相同的文件,或者其他一些驱动器--这样你就可以在launchd没有运行/一直试图成为老板的时候处理它们。

票数 10
EN

Stack Overflow用户

发布于 2017-11-30 17:58:38

我可以使用单用户模式来完成这个任务。这些步骤是:

  1. 关掉你的电脑。
  2. 启动时,输入单用户模式(命令+ S).
  3. 在命令行中,键入/sbin/mount -uw /
  4. 编辑适当的/var/db/com.apple.xpc.launchd/disabled.*.plist文件,按需要删除禁用项。
  5. exit
票数 5
EN

Stack Overflow用户

发布于 2015-09-11 19:25:31

我刚和LaunchControl在约塞米蒂…上解决了这个问题它必须有惊人的小GUI来管理您的守护进程和代理在OSX上。它有很多特性…所以只要用木桶安装就行了。

代码语言:javascript
复制
$ brew cask install launchcontrol

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

选择它,然后在主菜单中转到Job=>Override禁用key=>Always False

然后重新启动检查..。应该行得通!

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31206756

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档