launchctl list 可查看当前用户所有已加载的 launch agents,但需分层检查:用户级服务用 launchctl list,系统级需 sudo launchctl list,非 launchd 管理进程用 ps -axu,登录项与 plist 文件位置需手动验证。

查看当前用户的活跃代理服务
这些是登录后自动启动、且能访问图形界面的后台程序(比如微信托盘、iCloud 同步、飞书更新器):
- 运行 launchctl list —— 显示所有已加载的用户级服务,第三列是状态(- 表示正在运行)
- 加过滤更清晰:launchctl list | grep -v "0x" | grep -v "PID",排除系统内部条目
- 查具体某个服务是否真在跑:launchctl print gui/$(id -u)/com.tencent.xinWeChat(把 com.tencent.xinWeChat 换成你要查的服务名)
查看系统级守护进程(需管理员权限)
这类服务开机即运行,不依赖用户登录,通常由安装包、驱动或系统功能添加(如 Logitech 控制中心、打印机服务):
- 运行 sudo launchctl list —— 列出 /Library/LaunchDaemons 下已加载的系统服务
- 注意:/System/Library/LaunchDaemons 中的服务受 SIP 保护,不能卸载或修改,也不建议强行干预
- 想快速找第三方服务?试试:sudo launchctl list | grep -v com.apple.
补充:用 ps 命令看“真正在跑”的进程
launchctl list 只显示被 launchd 管理的服务;有些后台进程是直接启动的(比如某些 Java 工具、脚本),它们不会出现在 list 里,但可以用:
- ps -axu —— 列出全部进程,含 PID、用户、CPU、命令路径
- 只看无终端的后台守护:ps -axu | grep '?' | grep -v grep(TTY 列为 ? 的就是典型后台服务)
- 配合搜索:ps -axu | grep -i wechat 或 ps -axu | grep -i alfred
别漏掉图形界面“登录项”里的隐藏项
系统设置 → 用户与群组 → 登录项里勾选的应用,很多底层仍是通过 Launch Agent 实现的。但部分应用(如 Parallels、VMware)会额外注册 Launch Daemon,所以单看登录项并不完整。
- 检查用户级配置文件位置:ls ~/Library/LaunchAgents/
- 检查系统级配置文件位置:ls /Library/LaunchDaemons/
- plist 文件存在 ≠ 正在运行,需结合 launchctl list 和 launchctl print 确认状态











