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 状态。

相关推荐
lsh曙光6 小时前
延时at指令和定时cron指令
linux·服务器·网络
圆山猫6 小时前
[Virtualization](四):Linux KVM/RISC-V 的 vCPU 运行路径
java·linux·risc-v
布鲁飞丝6 小时前
vivo Pulsar 万亿级消息处理实践()-Ansible运维部署
运维·ansible
XR1234567886 小时前
企业全光网络架构选型技术白皮书:从物理层到运维层的全链路分析
运维·网络·架构
似的8356 小时前
一步一步学习使用FireMonkey动画() 使用TAnimator类创建动画
linux·学习·nginx
HiDev_7 小时前
【非标自动化】2、认识元器件(直线模组)
运维·自动化
龙仔7258 小时前
人大金仓 KingbaseES V8 只读账号创建完整运维笔记
运维·笔记·sql·人大金仓
我不管我就要叫小猪8 小时前
嵌入式Linux----网络通信
linux·运维·服务器
江湖有缘8 小时前
Docker实战 :使用Docker部署OneTerm堡垒机
运维·docker·容器
泡沫冰@8 小时前
ECS 的介绍和使用
linux·服务器·网络