Linux命令:iotop

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:增强版 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 状态。

相关推荐
广州灵眸科技有限公司15 小时前
4G 模组开机自连 systemd 服务方案:基于灵眸科技EAI1106--Core-T
运维·服务器·科技
天远数科16 小时前
零信任架构实战:基于天远企业股权变更构建自动化商业银行对公授信存续期股权异动与资产抽逃预警网关
运维·人工智能·架构·自动化
qq_4017004116 小时前
Linux设备树详解
linux·运维·服务器
云梦谭17 小时前
让 Linux 主动连接 Windows:配置 Windows 11 SSH 服务端
linux·windows·ssh
奇树谦17 小时前
Windows CMD 下 mc 运维指南:SeaweedFS 安装验收与 MinIO 数据迁移
运维·windows
刚入门的大一新生17 小时前
Linux-信号
linux·运维·服务器
车软学堂17 小时前
CANoe自动化:跑起第一个测试用例
运维·车载系统·自动化·汽车·测试用例
L02082419 小时前
Kubernetes Ingress|CNI 网络模型|Calico 网络策略|Pod 调度器完整实战教程
运维·网络·云原生·容器·kubernetes
考拉讲支付21 小时前
延迟分账 / 核销分账的技术实现方案:服务完成后再分钱,到底怎么设计?
大数据·运维·人工智能·微信小程序·小程序·系统架构