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

相关推荐
齐潇宇13 小时前
Jenkins 自动化部署 Tomcat + PHP
linux·运维·容器·tomcat·jenkins
枳实-叶13 小时前
【Linux驱动开发】第17天:I2C子系统整体架构
linux·驱动开发·架构
小辰记事本13 小时前
从零读懂RDMA硬件排障:读数、看码、查计数器
运维·网络·数据库
Cat_Rocky13 小时前
Linux-基于Jenkins自动打包并部署Tomcat环境
linux·tomcat·jenkins
hj28625113 小时前
Linux 进程、作业控制、定时任务 完整版整理笔记
linux·运维·笔记
深圳恒讯13 小时前
马来西亚服务器延迟怎么样?多少才算正常
运维·服务器
时间静止不是简史13 小时前
CentOS 7 虚拟机 NAT 网络排障:DHCP 服务为何启动即停
linux·网络·centos
黄筱筱筱筱筱筱筱13 小时前
基于AI 文本生成的自动化Linux 运维文档系统
运维·自动化
2601_9488106013 小时前
Jenkins
运维·jenkins