从 launchd 中删除代理

remove-launchd-service

绝大多数 Mac 用户不需要手动调整 launchd 和 launchctl,但有时您会在 Mac OS X 和服务代理继续在 launchd 中不必要地加载。这很烦人,但这些流氓代理很容易通过 命令行 删除,所以启动终端,然后我们走吧。此外,在某些情况下,高级用户可能出于某种原因想要调整加载到 launchd 中的代理。无论如何,我们将详细介绍如何在 launchd 中列出项目,如何在 OS X 中从 launchd 中删除它们,以及如何在 Mac 上将代理重新加载到 launchd 中。

您需要对使用命令行和终端有一定的了解和习惯才能正确使用它,这对于了解启动守护程序以及如何跟踪它们的更高级用户来说是理想的选择,有时,这是只需在 Mac OS X 的活动监视器中找到一个,或者使用我们稍后将讨论的 launchctl 命令。如果您决定撤消修改,您还可以使用另一个命令将服务或守护程序加载回 launchd,这会有效地撤消初始删除步骤。让我们开始吧:

从 OS X 中的 launchd 中删除启动代理和服务

这里是如何从 launchd 中删除服务。启动终端,然后使用以下语法和 launchctl 命令:

launchctl 删除名称

例如,如果我想删除名为“com.annoying.service”的服务,语法为:

launchctl remove com.annoying.service

您可能需要在命令前加上 sudo 以删除服务,在这种情况下,命令为:

sudo launchctl remove com.annoying.service

使用 sudo 前缀,您必须在命令执行前输入管理员密码。

如何查看launchd中加载的内容

您还可以使用以下命令字符串检查加载到 launchd 中的内容:

启动控制列表

此命令列出了加载到 launchd 中的所有代理和作业,使您可以轻松地操作正在运行的代理。因为它会立即将大量信息转储到屏幕上,所以您可能希望通过或多或少的命令将其通过管道传输,如下所示:

launchctl list |更多

这让您可以按回车键更慢地浏览列表。

如果您大致了解您正在寻找的服务,您还可以使用“grep”来找到精确的代理服务,我们以“mdworker”为例::

launchctl 列表 |grep mdworker

这将仅报​​告以下启动代理:

- 0 com.apple.mdworker.sizing
- 0 com.apple.mdworker.single
- 0 com.apple.mdworker.shared
- 0 com.apple .mdworker.mail
- 0 com.apple.mdworker.lsb
- 0 com.apple.mdworker.isolation
- 0 com.apple.mdworker.bundles
- 0 com .apple.mdworker.32bit

对于某些服务,转储列表可能还会显示活动服务的 PID(进程 ID)。

将代理加载回 launchd

如果您决定要重新启用服务并将其重新加载回 launchd,请像这样使用“加载”标志:

launchctl 加载 com.example.service.to.load

有些代理会立即加载而不会出现问题。对于其他人,您可能需要在加载的服务再次按预期运行之前重新启动 Mac,但有时注销并重新登录也足够了。