- 文档
- 教程
【免费下载链接】linux-command
Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux
iotop 是一个拥有与top相似交互界面的磁盘 I/O 监控工具,它能够把系统级 I/O 统计精确到每一个进程/线程(TID),帮助运维与开发快速定位"到底是谁在读写磁盘"。本文以 command/iotop.md 为核心,结合本仓库 600+ 命令手册的收录体系,完整覆盖 iotop 的安装、语法、选项、交互快捷键与实战输出解读,并补充进程级 I/O 排查与日志采集方案。
iotop 是什么:从"设备级"到"进程级"的 I/O 观测
Linux 下常见的 I/O 统计工具(如 iostat、nmon 等)大多只能统计到per-device(按设备)的读写情况——它们可以告诉你一块磁盘整体读了多少、写了多少,却无法回答一个更实际的问题:当前是哪个进程在消耗磁盘带宽?
iotop正是为了解决这个问题而生的 top 类工具。它实时轮询内核提供的 I/O 统计信息,以类似top的交互界面展示PID/TID、用户、进程/线程的读写速率与 I/O 等待占比,让你像看top看 CPU 一样直观地看到磁盘 I/O 的归属。
需要特别说明的是 iotop 的实现与运行前提:
- 语言与版本要求:iotop 使用 Python 语言编写,要求Python 2.5 及以上版本;
- 内核要求:需要Linux kernel 2.6.20 及以上版本(内核需开启
CONFIG_TASKSTATS与CONFIG_TASK_DELAY_ACCT相关支持,以便提供 per-task 的 I/O 与 delay 统计); - 权限要求:要查看系统中所有进程的 I/O 信息,通常需要 root 权限运行。
与 iotop 功能互补的是 sysstat 套件中的 pidstat,它通过
pidstat -d也能给出进程级 I/O,但 iotop 的实时交互界面与线程级(TID)展示在这一场景下更加直观。
在本仓库的索引体系(dist/data.json)中,iotop被收录为n: "iotop"、p: "/iotop",简介为"用来监视磁盘 I/O 使用状况的工具",与 iostat、pidstat 等 I/O 观测命令共同构成完整的磁盘性能排查手册。
安装 iotop
Ubuntu / Debian 系
apt-get install iotopCentOS / RedHat 系
yum install iotop在 RHEL/CentOS 8+ 或 Fedora 上,若默认软件源未收录,可改用
dnf install iotop;部分发行版(如 Alpine)通过apk add iotop安装,具体以发行版软件源为准。
源码编译安装(官方 tarball)
wget http://guichaz.free.fr/iotop/files/iotop-0.4.4.tar.gz tar zxf iotop-0.4.4.tar.gz python setup.py build python setup.py install编译安装的核心流程是setup.py build生成可执行文件,再setup.py install安装到系统路径。较新的发行版通常直接使用包管理器即可,源码方式适合自定义 Python 环境或需要固定特定版本的场景。
命令语法与选项详解
iotop(选项)直接执行iotop即可进入实时交互界面,常用选项如下:
| 选项 | 作用 | 使用场景 |
|---|---|---|
-o | 只显示有 I/O 操作的进程 | 过滤掉大量空闲进程,聚焦"谁在读写" |
-b | 批量(batch)模式,无交互,结果逐行输出 | 配合重定向写入日志文件做离线分析 |
-n NUM | 显示 NUM 次后退出 | 主要在非交互模式下控制采集次数 |
-d SEC | 每隔 SEC 秒刷新一次 | 控制采样间隔,默认间隔通常为 1 秒 |
-p PID | 只监控指定 PID 的进程 | 定向追踪某个可疑进程 |
-u USER | 只监控指定用户的进程 | 按业务账号过滤,缩小排查范围 |
批量模式与日志采集
非交互模式下最典型的组合是:
# 每 2 秒采样一次,共采集 10 次,写入日志 iotop -b -d 2 -n 10 > iotop.log # 只记录有 I/O 的进程,适合长时间后台采集 iotop -bo -d 5 > /var/log/iotop.log-b批量模式输出可直接被grep、awk等文本工具处理,也便于后续编写告警脚本;-o与-b组合可以显著减小日志体积,只保留真正发生 I/O 的行。
定向监控示例
# 只观察 PID 为 1234 的进程 iotop -p 1234 # 只观察用户 www-data 的进程 iotop -u www-data # 组合使用:指定进程 + 只显示有 I/O 的 iotop -p 1234 -o交互模式快捷键
进入 iotop 交互界面后,可以随时用快捷键调整视图:
- 左右箭头:改变排序方式,默认按 I/O(IO>)排序;
- r:反转排序顺序(升序/降序切换);
- o:只显示有 I/O 输出的进程(对应
-o选项); - p:在进程(PID)与线程(TID)显示方式之间切换;
- a:显示自进程启动以来的累积 I/O 使用量(累计读写字节);
- q:退出。
其中p键特别值得注意:iotop 默认按线程(TID)展示,多线程程序(如数据库、JVM、容器运行时)会以多个线程行的形式出现;按下p后切换为进程聚合视图,更适合定位"哪个进程整体占用高"。
实战:直接执行 iotop 的输出解读
直接执行iotop,可以看到类似如下的实时界面:
Total DISK read: 0.00 B/s | Total DISK write: 0.00 B/s TID PRIO USER DISK READ DISK WRITE SWAPIN IO> command 1 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % init [3] 2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [kthreadd] 3 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/0] 4 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/0] 5 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/0] 6 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [migration/1] 7 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [ksoftirqd/1] 8 rt/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [watchdog/1] 9 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [events/0] 10 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [events/1] 11 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [khelper] 2572 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % [bluetooth]各列含义如下:
- TID:线程 ID(按下
p切换后此处显示 PID); - PRIO:内核线程调度优先级(如
be/4表示 best-effort 等级、rt/4表示实时优先级); - USER:进程/线程所属用户;
- DISK READ / DISK WRITE:当前采样周期内的磁盘读写速率(B/s),即每秒实际发生 I/O 的字节数;
- SWAPIN:线程发生 swap-in(从交换分区换入内存)所占的等待时间百分比;
- IO>:线程等待磁盘 I/O 完成所占的时间百分比——该值越高,说明进程越"卡"在磁盘 I/O 上;
- command:进程/线程对应的命令名。
第一行的Total DISK read/write给出全系统瞬时 I/O 总量,适合先看总量再看明细。当某个进程IO>持续居高不下、DISK WRITE数值明显偏大时,它往往就是磁盘瓶颈的元凶;若SWAPIN异常升高,则提示内存不足导致频繁换页,应从内存维度进一步排查(可配合 free、vmstat 交叉验证)。
典型排障流程:用 iotop 定位磁盘 I/O 元凶
结合其他命令手册,一个完整的进程级磁盘 I/O 排查闭环通常如下:
- 先用 iostat 确认设备级读写是否繁忙(判断是否真的存在 I/O 瓶颈);
- 再用
iotop -o过滤出正在产生 I/O 的进程,快速锁定嫌疑对象; - 按下
a查看累积 I/O 量,区分"瞬时尖峰"与"持续高占用"; - 对嫌疑进程使用
iotop -p PID定向追踪,或配合 pidstat-d选项交叉核对进程 I/O; - 如需留档,用
iotop -b -n N -d SEC > file采集日志,供事后分析与告警使用。
小结
iotop 弥补了 iostat 等设备级工具无法回答"哪个进程在读写磁盘"的盲区。掌握-o/-b/-n/-d/-p/-u六个核心选项与交互界面的左右箭头 / r / o / p / a / q快捷键,即可在生产环境中快速完成进程级磁盘 I/O 的实时观测、定向追踪与批量日志采集。需要强调的是,iotop 的运行依赖 Python 2.5+ 与 Linux 2.6.20+ 内核的 per-task I/O 统计能力,这是其发挥作用的底层前提。
- 文档
- 教程
【免费下载链接】linux-command
Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux
相关推荐
linux-command 手册精讲:parted 命令实现磁盘分区与 GPT 大容量磁盘实战
linux command 手册精讲:parted 命令实现磁盘分区与 GPT 大容量磁盘实战 本文基于 linux command 仓库中收录的 parted
文档教程linux-command 手册精讲:NetHogs 按进程实时监控网络带宽的终端利器
linux command 手册精讲:NetHogs 按进程实时监控网络带宽的终端利器 NetHogs(Net top)是一个开源的命令行网络监控工具,它打破传
文档教程ps 命令详解:Linux 进程状态查看、字段解读与高效组合实战(linux-command 命令手册精讲)
ps 命令详解:Linux 进程状态查看、字段解读与高效组合实战(linux command 命令手册精讲) ps 是 Linux 系统管理中最基础也最强大的进
文档教程
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考