列出macOS上的所有已加载/已卸载或两个启动代理

时间:2019-06-13 05:23:07

标签: macos launchctl launch-agent

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

查找/ System / Library / Launch * / Library / Launch *〜/ Library / Launch * -name' .plist'-exec sh -c'/ usr / libexec / PlistBuddy -c“打印标签“ {} &&回声{}'';' | grep -wf <(启动列表| grep -o“ \ S + .. $”)-A1

grep -B 1 -A 1“活动计数= 1 $” <<<“ $(launchctl dumpstate)”

,但未列出我正在寻找的那个。 正确吗?

2 个答案:

答案 0 :(得分:0)

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

launchctl list

sudo launchctl list

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

如果您在终端中运行命令,则将要先运行非sudo版本,因为如果不这样做,则sudo版本将创建一个根会话,这将强制版本1始终具有root特权。 !

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

编辑:

好吧,我不知道我怎么在您的问题的大标题中错过了“卸载”一词,但是...这是守护程序/代理想要隐藏的目录(从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.

答案 1 :(得分:0)

我也有同样的问题,this article was super helpful。我建议您通读它,但这是一个相关的代码段:

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

与使用您喜欢的编辑器打开文件相比,解析该文件更为复杂。该文章链接到一个粘贴容器,但是此github repo是一站式商店。尽管如此,这篇文章还是很有帮助的。