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 iotop
或sudo yum install iotop
- 如果系统内核不支持所需特性,
iotop
将无法运行 - 在虚拟环境中,
iotop
可能无法准确报告 I/O 使用情况