🧭 说明
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 次,并将结果保存到文件:sudoiotop -b -t -n5-d10>iotop_log.txt
⚠️ 注意事项
- 权限要求:
iotop需要 root 权限来读取所有进程的 I/O 信息,因此通常需使用sudo。 - 内核支持:
iotop需要内核开启 I/O 统计功能,主流发行版通常已支持 。 - 综合诊断:
iotop擅长找出“谁”在读写磁盘,但要理解“为什么”磁盘慢,还需结合iostat、vmstat等工具查看设备级指标(如利用率%util、响应时间)。