iotop 是 Linux 下实时监控磁盘 I/O 占用的工具,专注定位高 IO 进程;支持 root 权限查看全部进程、-o 仅显示活跃 IO 进程、-P 仅显示进程,并通过 DISK WRITE 和 IO> 列识别瓶颈源。

iotop 是 Linux 下实时监控磁盘 I/O 占用的利器,专为快速定位高 IO 进程而设计。它类似 top,但聚焦于每个进程的读写速率、IO 百分比和等待时间,无需分析复杂日志或反复查 proc 文件。
安装与基础启动
多数发行版需手动安装:
- Ubuntu/Debian:sudo apt install iotop
- CentOS/RHEL:sudo yum install iotop(或 dnf install iotop)
普通用户运行只能看到自己的进程;要查看全部进程(含内核线程),必须用 root 权限:
- sudo iotop —— 默认界面,按 IO 使用率排序
- sudo iotop -o —— 只显示正在执行 IO 的进程(最常用)
- sudo iotop -P —— 只显示进程(不显示线程)
关键列含义与识别高 IO 进程
默认界面包含以下核心列:
- TID:线程 ID(若启用线程视图)
- PRIO:IO 调度优先级(越小越高,如 be/4 表示 best-effort 级别为 4)
- USER:所属用户
- DISK READ / DISK WRITE:实时读写速率(KB/s 或 MB/s)
- SWAPIN:换入内存百分比(高值可能暗示内存不足导致频繁换页)
- IO>:当前 IO 等待占比(%),持续接近 100% 表明该进程被 IO 卡住
- COMMAND:命令名(可展开显示完整路径,按 a 切换)
重点关注 DISK WRITE 和 IO> 两列:某进程持续写入 50MB/s 且 IO>95%,基本可判定为瓶颈源。
交互操作与实用技巧
运行中支持快捷键实时筛选和调整:
- Shift+O:切换是否只显示有 IO 活动的行(等效 -o)
- Shift+P:按 IO 使用率排序(默认)
- Shift+T:按运行时间排序
- Shift+A:展开/折叠线程组(便于识别 Java、MySQL 等多线程应用的主进程)
- r:反向排序
- q:退出
若需导出快照做对比分析,可用批处理模式:
- sudo iotop -b -n 1 —— 输出一次后退出(适合脚本调用)
- sudo iotop -b -n 5 -d 2 > iotop.log —— 每 2 秒采样一次,共 5 次,保存到文件
配合其他工具交叉验证
iotop 定位的是“谁在 IO”,但未必说明“为什么 IO 高”。建议联动排查:
- 查文件系统状态:iostat -x 1 看 %util、await、r/s、w/s,确认是否磁盘本身瓶颈
- 查进程打开的文件:lsof -p PID 或 ls -l /proc/PID/fd/,看是否在写大日志、临时文件或数据库文件
- 查内存压力:free -h 和 cat /proc/meminfo | grep -i "swap\|reclaim",排除因缺内存触发的 swap IO
- 查内核日志异常:dmesg -T | tail -20,留意磁盘错误或 IO timeout 提示









