sar (System Activity Reporter) 是 Linux 系统中一个非常强大的性能监控工具,它属于 sysstat 软件包。sysstat 包含了一系列用于收集、报告和保存系统活动信息的工具,sar 是其中最核心的一个。

如何安装 sar 命令
sar 命令通常包含在名为 sysstat 的软件包中,不同的 Linux 发行版使用不同的包管理器来安装软件。
在 Debian / Ubuntu / Mint 等系统上
使用 apt 包管理器。
# 更新软件包列表 sudo apt update # 安装 sysstat 包 sudo apt install sysstat
安装过程中,系统可能会提示你配置 sysstat,通常选择“是”即可,它会自动设置数据收集任务。
在 CentOS / RHEL / Fedora / AlmaLinux / Rocky Linux 等系统上
使用 yum 或 dnf 包管理器。

# 对于 CentOS 7, RHEL 7, Fedora 等较新版本 sudo dnf install sysstat # 对于 CentOS 6, RHEL 6 等较老版本 sudo yum install sysstat
在 Arch Linux 系统上
使用 pacman 包管理器。
sudo pacman -S sysstat
在 openSUSE 系统上
使用 zypper 包管理器。
sudo zypper install sysstat
安装后如何启用和配置
安装完成后,sysstat 服务通常默认是启用并自动运行的,它会按照配置(通常是每10分钟)在后台收集一次系统性能数据,并将数据保存在 /var/log/sa/ 目录下。
检查 sysstat 服务状态
你可以检查 sysstat 的数据收集服务(sysstat 或 sysstat-collect)是否正在运行。
# 对于使用 systemd 的系统 (Ubuntu 16.04+, CentOS 7+) sudo systemctl status sysstat # 对于使用 SysVinit 的系统 (较老的系统) sudo service sysstat status
如果看到 active (running),说明服务正在正常运行。
手动启用或启动服务
如果服务没有运行,你可以手动启动并设置为开机自启。
# 启动服务 sudo systemctl start sysstat # 设置为开机自启 sudo systemctl enable sysstat
配置文件位置
主要的配置文件是 /etc/sysstat/sysstat,你可以在这个文件中修改数据收集的频率、保存的天数等。
修改 HISTORY 和 SAVEDAYS 来调整数据保留的天数:
sudo nano /etc/sysstat/sysstat
找到下面这两行并修改:
# How long to keep daily data files (in days).
HISTORY = 7
# Compress saNN data files? (0 = no, 1 = yes)
COMPRESSAFTER = 7
修改后保存文件,sysstat 服务会自动应用新配置。
sar 命令的基本使用
sar 命令的强大之处在于它可以查看历史数据和实时数据。
查看实时数据
使用 -u 选项查看 CPU 使用率,r 表示实时刷新(类似 top 命令)。
# 每2秒刷新一次,共刷新5次,查看CPU使用率 sar -u 2 5
输出示例:
Linux 5.4.0-91-generic (ubuntu-server) 2025-10-27 _x86_64_ (2 CPU)
10:30:01 AM CPU %user %nice %system %iowait %steal %idle
10:30:03 AM all 5.42 0.00 1.25 0.42 0.00 92.91
10:30:05 AM all 3.54 0.00 1.20 0.40 0.00 94.86
10:30:07 AM all 4.17 0.00 1.08 0.21 0.00 94.54
10:30:09 AM all 3.96 0.00 1.17 0.00 0.00 94.87
Average: all 4.27 0.00 1.18 0.26 0.00 94.05
%user: 用户态进程占用 CPU 的百分比。%system: 内核态进程占用 CPU 的百分比。%iowait: 等待 I/O 操作(如磁盘读写)完成的时间百分比。%steal: 虚拟化环境中, hypervisor 为另一个虚拟机服务而偷走的时间。%idle: CPU 空闲的时间百分比。
查看历史数据
这是 sar 最常用的功能,它会读取 /var/log/sa/ 目录下的二进制数据文件。
# 查看昨天的 CPU 使用率报告 sar -u -f /var/log/sa/sa$(date -d yesterday +%d) # 更简单的方式,直接使用 -s 和 -e 指定时间范围 # 查看今天上午10点到11点的CPU使用率 sar -u -s 10:00:00 -e 11:00:00
常用选项和查看其他指标
| 选项 | 功能 | 示例 |
|---|---|---|
-b |
I/O 和传输速率统计 | sar -b |
-r |
内存使用情况 | sar -r (查看 kbmemfree, kbmemused, %memused 等) |
-B |
页面统计(内存换入换出) | sar -B |
-d |
块设备(磁盘)活动 | sar -d -p (查看设备名如 sda, sdb 的读写) |
-n |
网络统计 | sar -n DEV (查看网络接口流量) sar -n EDEV (查看网络接口错误) |
-q |
队列长度和负载平均值 | sar -q |
-P {ALL \| CPU_NUM} |
查看特定 CPU 核心的数据 | sar -u -P 0 (查看第一个CPU核心) sar -u -P ALL (查看所有CPU核心) |
列出所有可用的报告
如果你不确定某个数据文件里有什么,可以使用 -A 选项来显示所有可用的报告。
# 查看昨天所有历史数据的汇总报告 sar -A -f /var/log/sa/sa$(date -d yesterday +%d)
常见问题排查
问题:sar: /var/log/sa/saXX: No such file or directory
原因:sysstat 服务没有运行,或者数据文件被清理了。
解决方法:
- 确保
sysstat服务正在运行:sudo systemctl status sysstat。 - 如果服务未运行,启动它:
sudo systemctl start sysstat。 - 等待至少10分钟,让服务收集一次数据,然后再尝试使用
sar。
问题:sar 输出为空或只有当天的数据
原因:历史数据文件被删除了,或者 sysstat 配置中保留的天数太短。
解决方法:
- 检查
/var/log/sa/目录下是否有数据文件。 - 检查配置文件
/etc/sysstat/sysstat中的HISTORY值,确保它大于你想查询的天数。
- 安装:
sar命令在sysstat软件包中,使用你发行版的包管理器(apt,yum,dnf等)进行安装。 - 启用:安装后,
sysstat服务通常自动运行,负责定期收集数据。 - 使用:
- 实时监控:
sar -u 2 5(每2秒刷新5次)。 - 历史数据:
sar -u -f /var/log/sa/saDD(DD是日期)。 - 查看不同指标:使用
-b(I/O),-r(内存),-d(磁盘),-n(网络) 等选项。
- 实时监控:
- 核心优势:
sar最大的价值在于它能分析过去某个时间点的系统性能,对于排查历史性能问题非常有帮助。
