系统学习 macOS 学习路径:从 BSD 文件命令到系统、网络与开发维护

top

实时查看进程的 CPU、内存、线程占用,按列排序并观察系统负载。

补充说明

macOS 的 top 是交互式监视器,默认每秒刷新;-l 指定采样次数,-s 指定间隔,-n 限制进程数,-o 选择排序键(cpu、mem、time),-stats 自定义列,-pid 只看指定进程。脚本里通常用 top -l 1 -stats ... 取一段快照。

边界:第一份采样是开机以来的累计值,CPU 百分比会虚高,判断瞬时负载至少取 -l 2 看第二份。它和 ps 的快照、活动监视器的图表不是同一套口径;-l 0 表示无限采样,不会自己退出,脚本里不要这么写。

常用示例

# 1. 取一份快照,只看 CPU 最高的 10 个进程
% top -l 1 -n 10 -o cpu -stats pid,command,cpu,mem

# 2. 两次采样,第二份才是区间内的真实占用
% top -l 2 -s 2 -n 8 -o cpu

# 3. 按内存排序,排查内存压力
% top -l 1 -n 10 -o mem -stats pid,command,mem,rsize,threads

# 4. 只盯一个进程,适合观察 WindowServer 或编译进程
% top -pid "$(pgrep -x WindowServer)" -l 1 -stats pid,command,cpu,mem,threads

# 5. 需要查看其他用户进程的完整信息时用 sudo
% sudo top -l 1 -n 5 -o cpu -stats pid,user,command,cpu

# 6. 交互模式:s 改刷新间隔,n 改进程数,o 改排序,q 退出
% top

易错点与排错

相关命令

参考链接

读完自测

合上页面,先回答,再展开对照。

  1. 为什么 top -l 1 的 CPU 百分比通常不能直接用来判断当前负载?
  2. 脚本里想抓一份 CPU 前 10 的快照,-l、-n、-o、-stats 应该怎么配合?
  3. 进程的 vsize 很大但 rsize 很小,说明什么?该看哪个指标?
答案
  1. 第一份采样覆盖开机以来的累计区间,百分比会被历史拉高;用 -l 2 取第二份,或结合 ps/活动监视器判断。
  2. 例如 top -l 1 -n 10 -o cpu -stats pid,command,cpu,mem:一次采样、十个进程、按 CPU 排序、只输出指定列。
  3. 虚拟地址空间预留大但不常驻物理内存,不能说明内存泄漏;比较实际占用看 rsize、mem 和系统内存压力。
微信小程序码:扫码打开命令速查小程序

小程序版

微信扫码,随时查命令