系统运行状态统计工具
sar 是 Linux 的系统运行状态统计工具,它将指定的操作系统状态计数器显示到标准输出设备。sar 工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据。取样数据和分析的结果都可以存入文件,使用它时消耗的系统资源很小。
sar 命令在大多数 Linux 发行版中都可以使用,但需要先安装 sysstat 包。不同的发行版可能有不同的安装命令,您可以参考下面的示例:
# 基于 apt 的发行版(如 Debian、Ubuntu、Raspbian、Kali Linux 等):
$ sudo apt install sysstat
# 基于 yum 的发行版(如 RedHat,CentOS 7 等):
$ sudo yum install sysstat
# 基于 dnf 的发行版(如 Fedora,CentOS 8 等):
$ sudo dnf install sysstat
# 基于 apk 的发行版(如 Alpine Linux):
$ sudo apk add --update sysstat
# 基于 pacman 的发行版(如 Arch Linux):
$ sudo pacman -S sysstat
# 基于 zypper 的发行版(如 openSUSE):
$ sudo zypper in sysstat
# 基于 pkg 的 FreeBSD 发行版
$ sudo pkg install sysstat
# 基于 pkg 的 OS X/macOS 发行版:
$ brew install sysstat
sar [options] [interval] [count]
如果省略 interval 和 count,sar 会显示系统启动以来的平均统计数据。
如果只省略 count,sar 会无限次地显示统计数据,直到按 Ctrl+C 中断。
-A: 显示所有的报告信息;
-b: 显示I/O速率;
-B: 显示换页状态;
-c: 显示进程创建活动;
-d: 显示每个块设备的状态;
-e: 设置显示报告的结束时间;
-f: 从指定文件提取报告;
-i: 设状态信息刷新的间隔时间;
-n: 报告网络统计信息。
-P: 报告每个CPU的状态;
-R: 显示内存状态;
-u: 显示CPU利用率;
-v: 显示索引节点,文件和其他内核表的状态;
-w: 显示交换分区状态;
-x: 显示给定进程的状态。
-r: 以分页方式显示输出,每页最多显示 100 行。
-o: 输出选项,指定要显示的列。例如,`-o mrk,prt,cvg` 将显示 CPU 使用率、进程标识符、磁盘使用率 和 网络流量。
-t: 时间戳选项,指定要在输出中添加时间戳。
-s: 统计选项,指定要显示的统计数据的类型。例如,`-s us,ms` 将显示 CPU 使用率的 us 和 ms 时间段的平均值。
-c: 选项用于指定要发送的命令。例如,`-c ls` 将显示当前目录中的文件和子目录列表。
如果想查看 CPU 的利用率,可以使用 sar -u
命令,它会显示每个 CPU 的用户态、系统态、空闲态和等待 I/O 的百分比。如果不指定 interval 和 count,sar 会显示系统启动以来的平均 CPU 利用率。例如:
$ sar -u
Linux 5.10.15-1-MANJARO (linux) 2024-01-26 _x86_64_ (4 CPU)
11:52:13 CPU %user %nice %system %iowait %steal %idle
11:52:13 all 3.02 0.00 1.08 0.09 0.00 95.81
Average: all 3.02 0.00 1.08 0.09 0.00 95.81
如果指定 interval 和 count,sar 会显示每隔 interval 秒的 CPU 利用率,共显示 count 次。例如,sar -u 5 3 会显示每隔 5 秒的 CPU 利用率,共显示 3 次。例如:
$ sar -u 5 3
Linux 5.10.15-1-MANJARO (linux) 2024-01-26 _x86_64_ (4 CPU)
11:52:13 CPU %user %nice %system %iowait %steal %idle
11:52:18 all 2.90 0.00 1.10 0.10 0.00 95.90
11:52:23 all 3.10 0.00 1.05 0.08 0.00 95.77
Average: all 3.04 0.00 1.07 0.09 0.00 95.79
如果想查看每个 CPU 的利用率,可以使用 sar -u -P ALL
命令,它会显示每个 CPU 的用户态、系统态、空闲态和等待 I/O 的百分比,以及所有 CPU 的平均值。例如:
$ sar -u -P ALL
Linux 5.10.15-1-MANJARO (linux) 2024-01-26 _x86_64_ (4 CPU)
11:52:13 CPU %user %nice %system %iowait %steal %idle
11:52:13 0 3.03 0.00 1.09 0.09 0.00 95.79
如果想要查看内存的利用率,可以使用 sar -r
命令,它会显示内存使用率和空闲内存量。例如:
$ sar -r
如果你想要查看磁盘I/O的使用情况,可以使用 sar -d
命令,它会显示设备的活动状况。例如:
$ sar -d
如果你想查看网络使用情况,可以使用 sar -n DEV
命令,其中 'DEV' 指的是设备名,它会显示接收和发送的字节数。例如:
$ sar -n DEV
案例中将显示所有 CPU 的负载平均值,此操作可通过 "sar -q" 实现。例如:
$ sar -q
通过 sar -S
命令,您可以查看系统可用的交换空间大小。例如:
$ sar -S
通过 sar -q
命令,您可以查看系统的运行队列和加载平均值。例如:
$ sar -q
通过 sar -b
命令,您可以查看设备的数据传输速率。例如:
$ sar -b
通过指定开始时间和结束时间,可以查看特定时间段的 CPU 利用率,如8:00至12:00。前十一点四十五开始,到十二点结束的数据,可以使用 sar -u -s 11:45:00 -e 12:00:00
。例如:
$ sar -u -s 08:00:00 -e 12:00:00
可以设置 sar 命令每10分钟收集一次系统数据,持续2个小时,可以使用 sar -o output.file 600 12
。例如:
$ sar -o output.file 600 12
将由 sar -o output.file 600 12
产生的数据读取出来,可以使用 sar -f output.file
:
$ sar -f output.file
查看所有网络适配器的统计数据,包括所接收和发送的数据包数量,可以使用 sar -n DEV
。例如:
$ sar -n DEV