iotop命令

iotop 命令 #

iotop命令是一个用于监控磁盘 I/O 使用情况的交互式工具,类似于top命令监控 CPU 使用情况。它显示实时的磁盘读写情况,帮助识别哪些进程正在大量使用磁盘 I/O 资源。

语法 #

iotop [选项]

前提条件 #

iotop需要 Linux 内核支持以下特性:

  • CONFIG_TASK_DELAY_ACCT
  • CONFIG_TASK_IO_ACCOUNTING
  • CONFIG_TASKSTATS
  • CONFIG_VM_EVENT_COUNTERS

常用选项 #

选项 描述
-o, --only 只显示正在执行 I/O 操作的进程
-b, --batch 非交互式模式(批处理模式)
-n NUM 在批处理模式下,显示指定次数后退出
-d SEC, --delay=SEC 设置更新间隔(秒)
-p PID, --pid=PID 只监控指定 PID 的进程
-u USER, --user=USER 只监控指定用户的进程
-P, --processes 只显示进程,不显示所有线程
-a, --accumulated 显示累计 I/O 而不是带宽
-k, --kilobytes 使用千字节而不是人类可读的单位
-t, --time 在每一行前添加时间戳

交互式命令 #

在运行iotop时,可以使用以下键盘命令:

功能
左/右箭头 更改排序字段
r 反向排序
o 切换到只显示正在执行 I/O 操作的进程
p 切换到只显示进程(隐藏线程)
a 切换累计 I/O 模式
q 退出
i 更改 I/O 优先级

输出解释 #

iotop的输出包括以下列:

  • TID:线程 ID
  • PRIO:I/O 优先级
  • USER:用户名
  • DISK READ:磁盘读取速率
  • DISK WRITE:磁盘写入速率
  • SWAPIN:交换区读取百分比
  • IO:I/O 等待时间百分比
  • COMMAND:命令名称

常见用法 #

1. 启动 iotop 监控所有进程的 I/O 活动 #

sudo iotop

2. 只显示有 I/O 活动的进程 #

sudo iotop -o

3. 以批处理模式运行,每 5 秒更新一次,共 10 次 #

sudo iotop -b -n 10 -d 5

4. 监控特定用户的 I/O 活动 #

sudo iotop -u username

5. 监控特定进程的 I/O 活动 #

sudo iotop -p 1234

6. 显示累计 I/O 而不是带宽 #

sudo iotop -a

7. 将输出重定向到文件 #

sudo iotop -b -o -n 60 -d 5 > io_activity.log

注意事项 #

  • iotop通常需要 root 权限才能运行
  • 在某些系统上,可能需要安装iotop包:sudo apt install iotopsudo yum install iotop
  • 如果系统内核不支持所需特性,iotop将无法运行
  • 在虚拟环境中,iotop可能无法准确报告 I/O 使用情况