1

我正在尝试使用以下命令确定现在加载了多少启动代理

find /System/Library/Launch* /Library/Launch* ~/Library/Launch* -name '*.plist' -exec sh -c '/usr/libexec/PlistBuddy -c "Print Label" {} && echo {}' ';' | grep -wf <(launchctl list | grep -o "\S\+\..*$") -A1

grep -B 1 -A 1 "active count = 1$" <<< "$(launchctl dumpstate)"

但它没有列出我要找的那个。这是对的吗?

4

2 回答 2

4

使用launchctl您可以列出所有正在运行的代理和守护进程,如下所示:

launchctl list

sudo launchctl list

请注意,这两个是不同的命令。奇怪的是,运行sudo launchutil list会打印出根守护进程,并且打印根守护进程。

如果您在终端中运行命令,您将希望首先运行非 sudo 版本,因为如果您不这样做,sudo 版本将创建一个 root 会话,这将强制版本 #1 无论如何都具有 root 权限!

如果您想找到此类代理或守护程序的文件路径, 可能会有所帮助。

编辑:

好的,我不知道我是如何错过了您问题中巨大标题中的“卸载”一词,但是......这是守护进程/代理喜欢隐藏的目录(从launchctl的手册页复制):

FILES
 ~/Library/LaunchAgents         Per-user agents provided by the user.
 /Library/LaunchAgents          Per-user agents provided by the administrator.
 /Library/LaunchDaemons         System wide daemons provided by the administrator.
 /System/Library/LaunchAgents   OS X Per-user agents.
 /System/Library/LaunchDaemons  OS X System wide daemons.
于 2019-07-08T19:44:31.747 回答
0

我有同样的问题,这篇文章非常有帮助。我建议通读它,但这里有一个相关的片段:

虽然用户枚举所有登录项并不是一件简单的事情,但管理员可以通过解析以下文件(如果存在)来做一些额外的工作:~/Library/ApplicationSupport/com.apple.backgroundtaskmanagementagent/backgrounditems.btm

解析该文件比使用您喜欢的编辑器打开它更复杂。这篇文章链接到一个粘贴箱,但这个github repo是一个一站式商店。不过,这篇文章会有很大帮助。

于 2020-06-02T18:52:03.070 回答