必须用终端命令直击内核层:ps -axu一次性列出全部进程(含TTY为?的后台守护进程),top实时监控资源波动,launchctl list验证launchd服务是否真在运行。

要快速掌握Mac当前所有正在运行的进程,尤其是那些没有图形界面、却持续占用CPU或内存的后台服务,必须绕过图形界面直击系统内核层——终端命令是唯一能列出全部进程(含系统守护进程、用户代理、内核线程)的可靠方式。
用ps命令一次性列出全部进程
ps -axu 是最基础也最关键的命令,它强制输出所有用户、所有终端(包括无TTY的守护进程)的完整快照。
打开“应用程序”→“实用工具”→“终端”,或按 Command + 空格输入“终端”回车启动。
输入 ps -axu 并回车,你会看到包含 PID、UID、%CPU、%MEM、TTY、STAT 和完整 CMD 路径的长列表——其中 TTY 列为 ? 的条目,就是典型的后台守护进程,比如 mds(Spotlight)、bird(iCloud)、distnoted(通知中心)。
如果输出太长看不过来,直接追加 | less:输入 ps -axu | less,用方向键上下滚动,按 q 退出浏览模式。
用top命令实时观察进程动态
top 提供每秒刷新的交互式视图,适合追踪某个进程的资源波动趋势,比如 Java 应用突然飙高 CPU 或内存泄漏缓慢爬升。
在终端中输入 top 并回车,进入实时监控界面。
按下 Shift + P 按 CPU 使用率降序排列,Shift + M 切换至内存排序——此时真正吃资源的进程会立刻浮到顶部。
按 H 键可切换线程视图,看到单个进程内部各线程的资源分布;若发现某个 java 进程占满一个逻辑核心,但主进程名只显示为“java”,说明它没带 -Dname 参数,这时需结合 jps 命令进一步定位具体应用。
精准筛选特定类型进程
方法一:只看无控制终端的纯后台服务
执行 ps -axu | grep '?' | grep -v grep,这条命令过滤出 TTY 列为 ? 的进程,排除掉终端自身产生的匹配行。
方法二:快速定位 Java 进程
先运行 jps -l,它会直接列出所有 JVM 进程的 PID 和主类全路径,比在 top 或 ps 里肉眼找 “java” 可靠得多——因为有些 Java 进程启动时重命名了进程名,ps 里根本看不到 java 字样。
方法三:查某个关键词的完整命令行
比如怀疑 Dropbox 后台异常,不要只搜 dropbox,而要用 ps -axu | grep -i "dropbox\|com\.getdropbox",这样能捕获到其 launchd agent 加载的真实路径和参数。
验证进程是否真由 launchd 激活
1、在终端中运行 launchctl list,查看当前用户会话中已加载并正在运行的代理(如 1Password、Raycast)。
2、运行 sudo launchctl list 查看系统级守护进程(需输入管理员密码),输出中 PID 不为 “-” 的条目,才是此刻真实活跃的服务。
3、若想确认某服务是否开机自启,不能只看 launchctl list 输出——它只反映“当前是否运行”。要查配置文件本身是否启用,得去翻 /Library/LaunchDaemons/ 或 ~/Library/LaunchAgents/ 下对应 plist 文件里的 Disabled 键值,【Disabled = false 才表示开机自动加载】。

















