怎么查看linux系统占用io
怎么查看linux系统占用io详细介绍
在 Linux 系统中,可以通过多种工具查看 IO 占用情况,涵盖系统整体磁盘 IO 和进程级别的 IO 统计。以下是常用方法:
一、系统级 IO 监控工具
1.
iostat(磁盘整体 IO 统计)
- 功能:显示磁盘设备的 IO 利用率、吞吐量、响应时间等。
- 安装:通常包含在
sysstat包中,若未安装,使用以下命令安装:bashsysstat
yum sysstat
- 常用命令:bash
iostatiostat sda
- 关键输出字段:
r/s:每秒读操作次数w/s:每秒写操作次数rMB/s/wMB/s:每秒读写数据量(MB)await:每个 IO 请求的平均等待时间(毫秒)util:磁盘利用率(百分比,接近 100% 表示磁盘瓶颈)
2.
dstat(综合系统资源监控,含 IO)
- 功能:同时监控 CPU、内存、网络、IO 等,支持更详细的 IO 统计。
- 安装:bash
dstat
yum dstat
- 常用命令:bash
dstatdstat
二、进程级 IO 监控工具
1.
iotop(实时进程 IO 排序)
- 功能:交互式实时显示各进程的 IO 吞吐量,类似
top,支持排序。 - 安装:bash
iotop
yum iotop
- 使用:直接运行
iotop,按q退出。- 按
o切换显示正在产生 IO 的进程 - 按
p显示 PID - 按
r反向排序
- 按
2.
pidstat(按进程统计 IO)
- 功能:属于
sysstat工具,可统计指定进程的 IO 操作(需知道 PID)。 - 常用命令:bash
pidstatpidstat
- 关键字段:
kB_rd/s:进程每秒读取的数据量(KB)kB_wr/s:进程每秒写入的数据量(KB)iowait:进程等待 IO 的时间百分比
3.
lsof(查看进程打开的文件及 IO)
- 功能:列出所有进程打开的文件,间接反映 IO 操作(如磁盘文件、网络套接字等)。
- 常用命令:bash
三、通过 /proc 文件系统查看原始数据
1. 全局磁盘统计:
/proc/diskstats
- 路径:
cat /proc/diskstats - 格式:每行对应一个磁盘设备,字段含义(以
sda为例):plaintext8 0 sda 1234 567 890 123 456 789 1011 123 13 14 15 16- 第 1-3 列:主设备号、次设备号、设备名
- 第 4 列:读完成次数
- 第 5 列:合并的读次数(内核合并相邻请求)
- 第 6 列:读扇区总数(每个扇区 512 字节)
- 第 7 列:读操作总耗时(毫秒)
- 第 8-11 列:写操作相关统计(类似读操作)
2. 进程 IO 统计:
/proc/[pid]/io
- 路径:
cat /proc/1234/io(替换 1234 为目标 PID) - 关键字段:plaintext
rchar: 12345678 # 进程读取的字节数(包括缓存)wchar: 87654321 # 进程写入的字节数(包括缓存)
syscr: 1234 # 进程执行read系统调用的次数
syscw: 5678 # 进程执行write系统调用的次数
四、其他工具
1.
nmon(多功能监控工具)
- 功能:支持实时监控 CPU、内存、IO、网络等,输出更直观。
- 安装:下载对应 Linux 版本的 nmon 二进制文件,或通过包管理器安装。
- 使用:运行
nmon,按d键切换到磁盘 IO 监控界面。
2.
htop(增强版 top,部分版本支持 IO 显示)
- 功能:若编译时启用了 IO 统计,可在 htop 中查看进程的 IO 读写速率(需确认版本支持)。
总结推荐
- 快速查看整体磁盘 IO:
iostat -x 1 - 实时进程 IO 排序:
iotop - 按进程详细统计:
pidstat -d 1 - 排查异常文件占用:
lsof
根据具体需求选择工具,若需长期监控或日志分析,可结合sysstat的日志功能(如/var/log/sysstat/中的历史数据)。