发现mac变慢、风扇狂转或电池耗电快时,需通过活动监视器(显示所有进程分层)、ps -axu筛选tty为?的守护进程、top实时盯梢及launchctl查已激活服务来精准识别后台资源占用源。

当你发现Mac变慢、风扇无故狂转或电池耗电异常快,却找不到正在运行的程序窗口时,说明有后台进程在悄悄占用资源。这些进程不显示界面,但可能持续消耗CPU、内存或网络带宽,必须主动识别才能干预。
用活动监视器图形化查看全部后台进程
这是最直观、最适合新手的方式,能同时看到进程名称、资源占用、用户权限和父子关系。
按下 Command + 空格键 打开聚焦搜索,输入“活动监视器”,回车启动。
点击顶部菜单栏的“显示”→“所有进程,分层显示”,这一步【必须执行】,否则系统级守护进程(如launchd、kernel_task)会被折叠隐藏,你根本看不到真正的后台服务源头。
切换到“CPU”标签页,点击“% CPU”列标题排序——数值从高到低排列后,一眼就能揪出长期霸占15%以上CPU的可疑进程;若数值频繁跳动但始终不低于5%,大概率是后台索引或同步任务。
右键点击任意列标题空白处,勾选“PID”“用户”“命令行”三项。其中“用户”列为root的,基本是系统守护进程;列为当前用户名的,多为你的应用自动拉起的代理(比如iTerm2后台的tmux会话、VS Code的Language Server);“命令行”能显示完整启动路径,可快速区分是官方进程还是第三方软件注入的后台服务。
用终端ps命令一次性列出所有后台守护进程
适合需要导出列表、写脚本或排查无图形界面场景,输出结果不含实时刷新,但信息更原始、更全。
打开“应用程序”→“实用工具”→“终端”,输入:
ps -axu | grep '?' | grep -v grep
这条命令专门筛选TTY列为?的进程——【TTY为?代表该进程没有关联任何终端会话,是典型的后台守护进程】,比如mdnsresponder(局域网发现)、distnoted(通知中心后台)、apsd(Apple Push Service)全都会被精准捕获。
如果输出太长看不过来,追加 | less:ps -axu | grep '?' | grep -v grep | less,按方向键上下滚动,按q退出。
注意:不要直接执行 ps aux,它默认不包含系统级守护进程;-axu 中的 a 和 x 才是关键,a 表示显示所有用户的进程,x 表示显示没有控制终端的进程。
用top命令实时观察后台进程动态行为
当你怀疑某个进程存在间歇性爆发式占用(比如每30秒CPU冲到80%然后回落),静态快照无法捕捉,就得靠top盯梢。
在终端中输入 top 并回车,进入实时界面。
第一步:按 Shift + P,确保按CPU使用率降序排列;
第二步:按 Shift + M,切换至内存排序模式;
第三步:按 H 键开启线程视图,某些后台服务(如Safari WebContent)实际是多线程运行,单看主进程PID会低估其真实负载。
若只想看系统级服务,避免被用户进程干扰,直接运行 top -U _root ——这样连 kernel_task、launchd 这类核心进程的波动都能清晰呈现,不用手动过滤。
用launchctl精准定位已激活的系统服务
活动监视器和ps看到的是“正在运行”的进程,而launchctl能告诉你哪些服务已被系统加载并处于活跃状态,哪怕它此刻CPU占用为0——这才是真正意义上的“已激活后台服务”。
方法一:查当前用户代理
在终端中执行:
launchctl list | grep -v "PID" | grep -v "0x"
方法二:查系统级守护进程(需输入密码)
sudo launchctl list | grep -v "PID" | grep -v "0x"
输出每一行开头是服务标识符(如 com.apple.dock、com.apple.mDNSResponder),中间是PID(若为-表示未运行但已加载),末尾是最后一次退出状态。只要PID不是-,就说明该服务当前处于激活并驻留状态。
想确认某个服务是否开机自启?运行 launchctl print system/com.apple.mDNSResponder(把 com.apple.mDNSResponder 换成你要查的服务名),在输出里找 “Disabled = false” 这一行——【只有 Disabled = false 才代表它被系统认定为已启用】。











