☰
Linux Command 手册精读:iotop 命令——实时监控进程磁盘 I/O 的 top 类工具
2026/10/2 7:18:06 网站建设 项目流程
  • 文档
  • 教程

【免费下载链接】linux-command

Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。https://git.io/linux

项目地址:https://gitcode.com/GitHub_Trending/linux/linux-command
点击查看免费下载

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 iotop

CentOS / 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 交互界面后,可以随时用快捷键调整视图:

  1. 左右箭头:改变排序方式,默认按 I/O(IO>)排序;
  2. r:反转排序顺序(升序/降序切换);
  3. o:只显示有 I/O 输出的进程(对应-o选项);
  4. p:在进程(PID)与线程(TID)显示方式之间切换;
  5. a:显示自进程启动以来的累积 I/O 使用量(累计读写字节);
  6. 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 排查闭环通常如下:

  1. 先用 iostat 确认设备级读写是否繁忙(判断是否真的存在 I/O 瓶颈);
  2. 再用iotop -o过滤出正在产生 I/O 的进程,快速锁定嫌疑对象;
  3. 按下a查看累积 I/O 量,区分"瞬时尖峰"与"持续高占用";
  4. 对嫌疑进程使用iotop -p PID定向追踪,或配合 pidstat-d选项交叉核对进程 I/O;
  5. 如需留档,用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

项目地址:https://gitcode.com/GitHub_Trending/linux/linux-command
点击查看免费下载

相关推荐

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询