🧭 说明
iotop 是一个类似 top 命令的实时磁盘 I/O 监控工具,它能精确显示系统中各个进程或线程的磁盘读写情况,帮助快速定位 I/O 密集型进程 。
🔧 安装与基本使用
安装命令
大多数 Linux 发行版默认未安装 iotop,可以使用包管理器安装 :
- Debian/Ubuntu :
sudo apt install iotop - RHEL/CentOS :
sudo yum install iotop - Fedora :
sudo dnf install iotop - Arch Linux :
sudo pacman -S iotop
基本使用
执行 sudo iotop 即可启动交互式界面 。界面顶部显示系统总的磁盘读写速度,下方表格列出每个进程/线程的详细信息 。
输出列说明
理解各列含义对分析至关重要 :
| 列名 | 说明 |
|---|---|
| PID/TID | 进程ID/线程ID。 |
| USER | 进程所有者。 |
| DISK READ | 进程的磁盘读取速率。 |
| DISK WRITE | 进程的磁盘写入速率。 |
| SWAPIN | 进程进行交换(swap)的百分比。 |
| IO> | 进程等待 I/O 的时间百分比,是判断 I/O 压力的关键指标。 |
| COMMAND | 进程名称。 |
⚙️ 常用参数与技巧
下表汇总了一些最实用的命令参数 :
| 参数 | 说明 |
|---|---|
-o / --only |
只显示正在发生 I/O 的进程,让输出更聚焦 。 |
-b / --batch |
非交互式模式,常用于将输出重定向到文件,用于后续分析 。 |
-p PID |
仅监控指定的进程ID 。 |
-u USER |
仅监控指定用户的进程 。 |
-d SEC |
设置刷新间隔(秒),例如 -d 5 表示每5秒刷新一次 。 |
-n NUM |
在非交互模式下运行的次数,配合 -b 使用 。 |
-a / --accumulated |
显示累积 I/O 量,而非实时带宽 。 |
-t / --time |
在输出中增加时间戳,便于记录 。 |
交互模式快捷键
在 iotop 的交互界面中,使用快捷键可以动态调整显示 :
- 左右箭头:改变排序的列。
- r:反转排序顺序。
- o :切换"只显示活跃进程"的开关(相当于
-o参数)。 - q:退出程序。
💡 实际应用场景
-
快速定位系统卡顿元凶
当系统响应缓慢时,可运行
sudo iotop -o,按IO%列排序,直观地看到是哪个进程在大量读写磁盘 。 -
监控特定服务
若要监控数据库(如 MySQL)的 I/O 活动,可以使用
sudo iotop -u mysql -o,专门查看该用户的进程 。 -
记录特定时间段的 I/O 日志
用于事后分析,例如,以下命令将每 10 秒采样一次,共 5 次,并将结果保存到文件:
bashsudo iotop -b -t -n 5 -d 10 > iotop_log.txt
⚠️ 注意事项
- 权限要求 :
iotop需要 root 权限来读取所有进程的 I/O 信息,因此通常需使用sudo。 - 内核支持 :
iotop需要内核开启 I/O 统计功能,主流发行版通常已支持 。 - 综合诊断 :
iotop擅长找出"谁"在读写磁盘,但要理解"为什么"磁盘慢,还需结合iostat、vmstat等工具查看设备级指标(如利用率%util、响应时间)。