侧边栏壁纸
Linux入门自学网博主等级

每日学一条Linux命令,终成Linux大神

  • 累计撰写 725 篇文章
  • 累计创建 143 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

Linux iostat命令教程:如何监控系统的输入/输出性能(附实例详解和注意事项)

Linux iostat命令介绍

iostat命令是input/output statistics的缩写,它可以显示系统的CPU使用率和设备的输入/输出负载。iostat命令通过观察设备的活动时间和平均传输速率来监控系统的输入/输出性能。iostat命令可以生成多种报告,包括CPU报告、设备报告、分区报告、网络文件系统报告等,这些报告可以帮助我们分析和调优系统的配置,以提高输入/输出的效率。iostat命令是sysstat包的一部分,如果没有安装,需要先安装sysstat包。

Linux iostat命令适用的Linux版本

iostat命令适用于大多数Linux发行版,如RedHat、CentOS、Fedora、Debian、Ubuntu、Linux Mint等。不同的Linux发行版可能有不同的安装方法,例如:

  • 在RedHat / CentOS / Fedora上,可以使用yum install sysstat命令来安装sysstat包。
  • 在Debian / Ubuntu / Linux Mint上,可以使用apt-get install sysstat命令来安装sysstat包。
  • 在Arch Linux上,可以使用pacman -S sysstat命令来安装sysstat包。

安装完成后,可以使用iostat --version命令来查看iostat的版本信息,例如:

[linux@bashcommandnotfound.cn ~]$ iostat --version
sysstat version 12.5.4
(C) Sebastien Godard (sysstat <at> orange.fr)

Linux iostat命令的基本语法

iostat命令的基本语法格式如下:

iostat [options] [devices] [interval] [count]

其中:

  • options是可选的参数,用于指定报告的类型、格式、单位等。
  • devices是可选的设备名,用于指定要监控的设备,如sda、sdb等。如果不指定,表示监控所有的设备。
  • interval是可选的时间间隔,用于指定报告的刷新频率,单位是秒。如果不指定,表示只生成一次报告。
  • count是可选的次数,用于指定报告的生成次数。如果不指定,表示无限次生成报告,直到按Ctrl+C终止。

Linux iostat命令的常用选项或参数说明

iostat命令有很多选项或参数,可以用于控制报告的内容和格式。以下是一些常用的选项或参数:

选项或参数说明
-c只显示CPU报告
-d只显示设备报告
-h以易读的方式显示报告,使用K、M、G等单位
-k以KB为单位显示报告
-m以MB为单位显示报告
-N显示设备的映射名,而不是设备的主从号
-p显示分区报告
-t在每个报告的开头显示当前的时间和日期
-V显示iostat的版本信息
-x显示扩展的报告,包括更多的统计信息
-y省略第一次的报告,因为第一次的报告是从系统启动开始的平均值,可能不太准确

Linux iostat命令的实例

以下是一些使用iostat命令的实例,可以帮助你更好地理解和使用iostat命令。

实例1:显示默认的报告

如果不带任何选项或参数,iostat命令会显示默认的报告,包括CPU报告和设备报告。例如:

[linux@bashcommandnotfound.cn ~]$ iostat
Linux 5.10.0-8-amd64 (debian) 	2023-12-26 	_x86_64_	(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.34    0.00    0.75    0.13    0.00   96.78

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.32        15.65        14.36    1226109    1125836
sdb               0.00         0.00         0.00          0          0

这里,CPU报告的含义如下:

  • %user:用户态进程占用的CPU百分比。
  • %nice:优先级调整为正值的用户态进程占用的CPU百分比。
  • %system:内核态进程占用的CPU百分比。
  • %iowait:等待I/O操作的CPU百分比。
  • %steal:被其他虚拟机占用的CPU百分比。
  • %idle:空闲的CPU百分比。

设备报告的含义如下:

  • Device:设备的名称。
  • tps:每秒传输的次数。
  • kB_read/s:每秒读取的数据量,单位是KB。
  • kB_wrtn/s:每秒写入的数据量,单位是KB。
  • kB_read:总共读取的数据量,单位是KB。
  • kB_wrtn:总共写入的数据量,单位是KB。

实例2:显示扩展的报告

如果使用-x选项,iostat命令会显示扩展的报告,包括更多的统计信息,如平均队列长度、平均服务时间、平均等待时间、平均利用率等。例如:

[linux@bashcommandnotfound.cn ~]$ iostat -x
Linux 5.10.0-8-amd64 (debian) 	2023-12-26 	_x86_64_	(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.34    0.00    0.75    0.13    0.00   96.78

Device            r/s     w/s     rkB/s     wkB/s   rrqm/s   wrqm/s  %rrqm  %wrqm r_await w_await aqu-sz rareq-sz wareq-sz  svctm  %util
sda              0.66    0.66     15.65     14.36     0.00     0.00   0.00   0.00    0.00    0.00   0.00    23.69    21.67   0.00   0.00
sdb              0.00    0.00      0.00      0.00     0.00     0.00   0.00   0.00    0.00    0.00   0.00     0.00     0.00   0.00   0.00

这里,扩展的报告的含义如下:

  • r/s:每秒读取的次数。
  • w/s:每秒写入的次数。
  • rkB/s:每秒读取的数据量,单位是KB。
  • wkB/s:每秒写入的数据量,单位是KB。
  • rrqm/s:每秒合并的读请求数。
  • wrqm/s:每秒合并的写请求数。
  • %rrqm:合并的读请求数占总读请求数的百分比。
  • %wrqm:合并的写请求数占总写请求数的百分比。

实例3:显示分区报告

如果使用-p选项,iostat命令会显示分区报告,包括每个分区的输入/输出负载。例如:

[linux@bashcommandnotfound.cn ~]$ iostat -p
Linux 5.10.0-8-amd64 (debian) 	2023-12-26 	_x86_64_	(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.34    0.00    0.75    0.13    0.00   96.78

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.32        15.65        14.36    1226109    1125836
sda1              0.00         0.00         0.00          0          0
sda2              0.00         0.00         0.00          0          0
sda3              0.00         0.00         0.00          0          0
sda4              0.00         0.00         0.00          0          0
sda5              1.32        15.65        14.36    1226109    1125836
sdb               0.00         0.00         0.00          0          0

这里,分区报告的含义和设备报告的含义相同,只是针对每个分区而不是每个设备。

实例4:显示网络文件系统报告

如果使用-n选项,iostat命令会显示网络文件系统报告,包括每个网络文件系统的输入/输出负载。例如:

[linux@bashcommandnotfound.cn ~]$ iostat -n
Linux 5.10.0-8-amd64 (debian) 	2023-12-26 	_x86_64_	(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.34    0.00    0.75    0.13    0.00   96.78

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
nfs1              0.00         0.00         0.00          0          0
nfs2              0.00         0.00         0.00          0          0

这里,网络文件系统报告的含义和设备报告的含义相同,只是针对每个网络文件系统而不是每个设备。

实例5:显示指定的设备报告

如果指定设备名,iostat命令会显示指定的设备报告,而不是所有的设备报告。例如,如果只想监控sda设备,可以使用以下命令:

[linux@bashcommandnotfound.cn ~]$ iostat sda
Linux 5.10.0-8-amd64 (debian) 	2023-12-26 	_x86_64_	(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.34    0.00    0.75    0.13    0.00   96.78

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.32        15.65        14.36    1226109    1125836

实例6:显示指定的时间间隔和次数的报告

如果指定时间间隔和次数,iostat命令会按照指定的时间间隔和次数来刷新报告。例如,如果想每隔5秒刷新一次报告,共刷新10次,可以使用以下命令:

[linux@bashcommandnotfound.cn ~]$ iostat 5 10
Linux 5.10.0-8-amd64 (debian) 	2023-12-26 	_x86_64_	(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.34    0.00    0.75    0.13    0.00   96.78

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.32        15.65        14.36    1226109    1125836
sdb               0.00         0.00         0.00          0          0

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.00    0.00    0.00    0.00    0.00  100.00

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.00         0.00         0.00          0          0
sdb               0.00         0.00         0.00          0          0

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.00    0.00    0.00    0.00    0.00  100.00

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               0.00         0.00         0.00          0          0
sdb               0.00         0.00         0.00          0          0

...

这里,每隔5秒会显示一次报告,每次报告的数据是从上次报告开始的平均值,而不是从系统启动开始的平均值。共显示10次报告后,命令会自动退出。

实例7:显示当前的时间和日期

如果使用-t选项,iostat命令会在每个报告的开头显示当前的时间和日期,这样可以更方便地记录和分析报告的变化。例如:

[linux@bashcommandnotfound.cn ~]$ iostat -t
Linux 5.10.0-8-amd64 (debian) 	2023-12-26 	_x86_64_	(4 CPU)

Time: 15:03:14
avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.34    0.00    0.75    0.13    0.00   96.78

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.32        15.65        14.36    1226109    1125836
sdb               0.00         0.00         0.00          0          0

实例8:显示易读的报告

如果使用-h选项,iostat命令会以易读的方式显示报告,使用K、M、G等单位来表示数据量,而不是KB。例如:

[linux@bashcommandnotfound.cn ~]$ iostat -h
Linux 5.10.0-8-amd64 (debian) 	2023-12-26 	_x86_64_	(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.34    0.00    0.75    0.13    0.00   96.78

Device             tps  kB_read/s  kB_wrtn/s  kB_read  kB_wrtn
sda               1.32     15.6 K     14.4 K    1.2 M    1.1 M
sdb               0.00      0.0 K      0.0 K    0.0 K    0.0 K

实例9:显示以KB为单位的报告

如果使用-k选项,iostat命令会以KB为单位显示报告,这是默认的单位。例如:

[linux@bashcommandnotfound.cn ~]$ iostat -k
Linux 5.10.0-8-amd64 (debian) 	2023-12-26 	_x86_64_	(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.34    0.00    0.75    0.13    0.00   96.78

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.32        15.65        14.36    1226109    1125836
sdb               0.00         0.00         0.00          0          0

实例10:显示以MB为单位的报告

如果使用-m选项,iostat命令会以MB为单位显示报告,这样可以更方便地表示大数据量。例如:

[linux@bashcommandnotfound.cn ~]$ iostat -m
Linux 5.10.0-8-amd64 (debian) 	2023-12-26 	_x86_64_	(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.34    0.00    0.75    0.13    0.00   96.78

Device             tps    MB_read/s    MB_wrtn/s    MB_read    MB_wrtn
sda               1.32         0.02         0.01       1197       1099
sdb               0.00         0.00         0.00          0          0

实例11:显示只有CPU报告

如果使用-c选项,iostat命令会显示只有CPU报告,而不显示设备报告。例如:

[linux@bashcommandnotfound.cn ~]$ iostat -c
Linux 5.10.0-8-amd64 (debian) 	2023-12-26 	_x86_64_	(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.34    0.00    0.75    0.13    0.00   96.78

实例12:显示只有设备报告

如果使用-d选项,iostat命令会显示只有设备报告,而不显示CPU报告。例如:

[linux@bashcommandnotfound.cn ~]$ iostat -d
Linux 5.10.0-8-amd64 (debian) 	2023-12-26 	_x86_64_	(4 CPU)

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.32        15.65        14.36    1226109    1125836
sdb               0.00         0.00         0.00          0          0

实例13:显示设备的映射名

如果使用-N选项,iostat命令会显示设备的映射名,而不是设备的主从号。这样可以更方便地识别设备的类型和用途。例如:

[linux@bashcommandnotfound.cn ~]$ iostat -N
Linux 5.10.0-8-amd64 (debian) 	2023-12-26 	_x86_64_	(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.34    0.00    0.75    0.13    0.00   96.78

Device             tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sda               1.32        15.65        14.36    1226109    1125836
sdb               0.00         0.00         0.00          0          0
nvme0n1           0.00         0.00         0.00          0          0

这里,可以看到有一个nvme0n1的设备,它是一个NVMe类型的固态硬盘。

实例14:显示iostat的版本信息

如果使用-V选项,iostat命令会显示iostat的版本信息,包括作者和邮箱。例如:

[linux@bashcommandnotfound.cn ~]$ iostat -V
sysstat version 12.5.4
(C) Sebastien Godard (sysstat <at> orange.fr)

实例15:显示快捷键

iostat命令有一些快捷键,可以在运行时改变报告的内容和格式。以下是一些常用的快捷键:

iostat命令的快捷键

  • Ctrl+C:终止iostat命令的运行。
  • x:切换扩展的报告模式。
  • d:切换设备的报告模式。
  • p:切换分区的报告模式。
  • n:切换网络文件系统的报告模式。
  • m:切换以MB为单位的报告模式。
  • k:切换以KB为单位的报告模式。
  • t:切换显示时间和日期的报告模式。
  • y:切换省略第一次报告的模式。
  • 0-9:切换显示不同的CPU报告模式,0表示显示所有的CPU,1-9表示显示指定的CPU。

Linux iostat命令的注意事项

  • iostat命令需要安装sysstat包,如果没有安装,需要先安装sysstat包,否则会提示bash: iostat: command not found
  • iostat命令的报告是基于系统的统计信息,如果系统的统计信息不准确或不完整,iostat命令的报告也会不准确或不完整。
  • iostat命令的报告是基于指定的时间间隔和次数,如果时间间隔太短或太长,或者次数太少或太多,iostat命令的报告可能不够精确或不够全面。
  • iostat命令的报告是基于设备的输入/输出负载,而不是设备的性能或容量。如果想要评估设备的性能或容量,需要使用其他的工具或方法。

Linux iostat命令的相关命令

以下是一些和iostat命令相关的命令,可以用于监控或分析系统的输入/输出性能:

0

评论区