Linux命令:iotop

iotop 命令

基本介绍

iotop(I/O Top)是 Linux 系统中用于实时监控磁盘 I/O 使用情况的工具,类似于 top 命令但专门用于 I/O 监控。它可以显示每个进程的磁盘读写速度、I/O 等待时间等信息,帮助系统管理员定位磁盘 I/O 瓶颈和资源消耗大户。

资料合集:https://pan.quark.cn/s/6fe3007c3e95https://pan.quark.cn/s/561de99256a5https://pan.quark.cn/s/985f55b13d94https://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:增强版 top
  • iostat:磁盘 I/O 统计工具
  • vmstat:虚拟内存统计工具
  • pidstat:进程级统计工具
  • df:磁盘空间使用情况
  • du:文件大小统计
  • fio:灵活的 I/O 测试工具

注意事项

  1. 权限要求iotop 需要 root 权限才能正常运行
  2. 内核支持:需要 Linux 内核版本 2.6.20 或更高
  3. 安装方法
    • Debian/Ubuntu:apt-get install iotop
    • CentOS/RHEL:yum install iotop
  4. 性能影响iotop 本身会产生一定的系统开销
  5. 批处理模式 :使用 -b 选项适合脚本和自动化场景

总结

iotop 是 Linux 系统中用于实时监控磁盘 I/O 使用情况的强大工具。它可以帮助系统管理员快速定位磁盘 I/O 瓶颈和资源消耗大户,是性能监控和故障诊断的必备工具。通过结合其他工具(如 iostat、vmstat、pidstat),可以全面了解系统的 I/O 状态。

相关推荐
AlfredZhao15 分钟前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao15 小时前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户97183563346621 小时前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪1 天前
linux 拷贝文件或目录到指定的位置
linux
大树882 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质2 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush42 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5202 天前
Linux 11 动态监控指令top
linux
Inhand陈工2 天前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信