iotop 命令
基本介绍
iotop(I/O Top)是 Linux 系统中用于实时监控磁盘 I/O 使用情况的工具,类似于 top 命令但专门用于 I/O 监控。它可以显示每个进程的磁盘读写速度、I/O 等待时间等信息,帮助系统管理员定位磁盘 I/O 瓶颈和资源消耗大户。
资料合集:https://pan.quark.cn/s/6fe3007c3e95、https://pan.quark.cn/s/561de99256a5、https://pan.quark.cn/s/985f55b13d94、https://pan.quark.cn/s/d0fb20abd19a
语法
iotop [OPTIONS]
常用选项
基本选项
-o, --only:只显示正在进行 I/O 操作的进程-b, --batch:批处理模式,非交互式输出-n, --iter=NUM:指定输出次数后退出-d, --delay=SEC:设置刷新间隔时间(秒)-p, --pid=PID:只显示指定进程的 I/O 信息-u, --user=USER:只显示指定用户的进程
排序选项
-P, --processes:按进程而非线程显示-a, --accumulated:显示累积的 I/O 统计-k, --kilobytes:以 KB/s 为单位显示-t, --time:在每行前显示时间戳
其他选项
-h, --help:显示帮助信息-v, --version:显示版本信息
使用示例
1. 基本使用
bash
iotop
输出示例:
Total DISK READ : 0.00 B/s | Total DISK WRITE : 0.00 B/s
Actual DISK READ: 0.00 B/s | Actual 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 % systemd
2 be/4 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % kthreadd
3 be/0 root 0.00 B/s 0.00 B/s 0.00 % 0.00 % rcu_gp
123 be/4 user 10.24 K/s 50.50 K/s 0.00 % 2.30 % chrome
456 be/4 user 5.12 K/s 25.25 K/s 0.00 % 1.15 % node
2. 只显示正在进行 I/O 的进程
bash
iotop -o
3. 批处理模式输出
bash
iotop -b
iotop -b -n 5
iotop -b -d 2 -n 10
4. 只显示指定进程
bash
iotop -p 1234
iotop -p 1234,5678
5. 只显示指定用户
bash
iotop -u root
iotop -u user1
6. 以 KB/s 为单位显示
bash
iotop -k
7. 显示累积统计
bash
iotop -a
8. 按进程显示(而非线程)
bash
iotop -P
9. 输出到文件
bash
iotop -b -n 10 > io_stats.txt
输出格式说明
主要字段说明
| 字段 | 说明 |
|---|---|
TID |
线程 ID |
PRIO |
I/O 优先级(be 表示 best-effort) |
USER |
进程所属用户 |
DISK READ |
磁盘读取速度 |
DISK WRITE |
磁盘写入速度 |
SWAPIN |
交换分区使用百分比 |
IO |
I/O 等待时间百分比 |
COMMAND |
命令名称 |
I/O 优先级说明
| 优先级 | 说明 |
|---|---|
be |
Best-effort(默认) |
rt |
Real-time |
idle |
Idle |
交互命令
在 iotop 运行时,可以使用以下交互命令:
| 命令 | 说明 |
|---|---|
o |
切换只显示有 I/O 活动的进程 |
p |
切换按进程/线程显示 |
a |
切换累积模式 |
q |
退出 iotop |
k |
杀死指定进程 |
r |
反转排序顺序 |
1 |
切换显示所有 CPU 核心的统计 |
实用技巧
监控磁盘 I/O 瓶颈
bash
# 实时监控 I/O 活动
iotop -o
# 查看累积 I/O 使用
iotop -a -b -n 1
定位高 I/O 进程
bash
# 查看写入最多的进程
iotop -b -n 1 | sort -k 6 -r | head -5
# 查看读取最多的进程
iotop -b -n 1 | sort -k 5 -r | head -5
脚本中使用
bash
# 获取磁盘写入速度最高的进程
top_writer=$(iotop -b -n 1 | grep -v '^$' | grep -v 'Total' | sort -k 6 -r | head -1)
echo "Top Writer: $top_writer"
监控特定进程的 I/O
bash
# 监控 MySQL 的 I/O
iotop -p $(pgrep mysqld)
# 监控多个进程
iotop -p $(pgrep -d ',' nginx)
生成 I/O 报告
bash
# 生成 1 分钟的 I/O 报告
iotop -b -d 1 -n 60 > io_report.txt
# 分析报告
cat io_report.txt | awk '{sum+=$6} END {print "Total Write: " sum}'
相关命令
top:实时系统监控htop:增强版 topiostat:磁盘 I/O 统计工具vmstat:虚拟内存统计工具pidstat:进程级统计工具df:磁盘空间使用情况du:文件大小统计fio:灵活的 I/O 测试工具
注意事项
- 权限要求 :
iotop需要 root 权限才能正常运行 - 内核支持:需要 Linux 内核版本 2.6.20 或更高
- 安装方法 :
- Debian/Ubuntu:
apt-get install iotop - CentOS/RHEL:
yum install iotop
- Debian/Ubuntu:
- 性能影响 :
iotop本身会产生一定的系统开销 - 批处理模式 :使用
-b选项适合脚本和自动化场景
总结
iotop 是 Linux 系统中用于实时监控磁盘 I/O 使用情况的强大工具。它可以帮助系统管理员快速定位磁盘 I/O 瓶颈和资源消耗大户,是性能监控和故障诊断的必备工具。通过结合其他工具(如 iostat、vmstat、pidstat),可以全面了解系统的 I/O 状态。