macos原生终端无iotop -a式图形io监控,但可用sudo iotop -c -o -n 1实现每秒刷新的进程级io速率文字热力图,配合iostat -d -i -w 1查看磁盘吞吐,二者结合可闭环定位io来源与目标。
macos 原生终端不提供类似 linux iotop -a 那样的“实时io负载图”(带动态波形或柱状图的可视化界面),但可通过组合命令实现近实时、可刷新、带排序的io负载快照流,效果接近“文字版负载图”。以下是真正可用、无需第三方gui工具的实用方案:
用 iotop 输出每秒更新的进程级IO速率(推荐)
iotop 是最贴近“IO负载图”需求的命令,它以表格形式滚动显示各进程读写速率,并支持按列排序、仅显示活跃进程等,视觉上具备负载分布感。
-
确保已安装 Homebrew 和 iotop:
brew install iotop
-
以管理员权限运行,每秒刷新一次,只显示有IO活动的进程:
sudo iotop -C -o -n 1
-
-C:纯字符模式(禁用颜色和交互) -
-o:只显示正在执行IO的进程(避免噪声) -
-n 1:每1秒刷新一次(即实时流)
-
-
观察关键列:
-
IO_RATE:综合IO速率(KB/s 或 MB/s) -
READ_RATE:当前读取速率 -
WRITE_RATE:当前写入速率✅ 连续运行时,数值跳动+高位进程稳定居顶,就相当于一张“文字IO热力图”。
-
-
按
q退出;如需持续监控,可加watch封装(macOS需先安装):brew install watch sudo watch -n 1 'iotop -C -o -n 1 | head -20'
用 top + 自定义字段间接观察(无需安装)
虽然 top 不直接显示磁盘IO,但 macOS 的 top 支持自定义列(需较新系统,如 Sequoia / Sonoma):
top -o io -stats pid,command,%cpu,io,rbytes,wbytes -s 1
-
-o io:按IO活动排序(内部指标,非字节率,但能反映活跃度) -
-stats ...:强制显示rbytes(读取字节数)、wbytes(写入字节数)累计值 -
-s 1:每秒刷新
⚠️ 注意:该 io 排序依据是内核统计的IO事件数,不是吞吐量,适合识别“频繁小IO”的进程(如日志轮转、索引服务),配合 rbytes/wbytes 差值可估算吞吐。
快速查看所有挂载卷的整体IO速率(非进程级)
若你更关心“哪个卷正在被猛读写”,可用 iostat(系统自带):
iostat -d -I -w 1
-
-d:仅显示磁盘设备(隐藏CPU等) -
-I:以 字节/秒 为单位(而非块/秒) -
-w 1:每1秒刷新
输出示例:
disk0 disk2s1
KB/t 32.54 18.92
t/s 124.6 87.3
MB/s 3.98 1.62
✅
MB/s行就是各挂载卷(对应物理设备)的实时吞吐,一目了然哪块盘在扛压。
不复杂但容易忽略:iostat 显示的是设备层速率,iotop 显示的是进程层来源——两者结合,就能从“谁在写”和“写到哪”两个维度闭环定位。











