繁体   English   中英

在 macOS 上列出所有加载/卸载或同时启动代理

[英]List All Loaded/Unloaded or Both Launch Agents On macOS

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

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)"

但它没有列出我正在寻找的那个。 这是正确的吗?

使用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.

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

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

解析该文件比使用您喜欢的编辑器打开它更复杂。 文章链接到粘贴箱,但此github 存储库是一站式商店。 尽管如此,这篇文章还是有很大帮助的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM