Linux sar命令详细使用指南

目录

一、安装与启用

[✅ 1. 安装 sysstat](#✅ 1. 安装 sysstat)

[✅ 2. 启用数据收集](#✅ 2. 启用数据收集)

[✅ 3.核心配置文件](#✅ 3.核心配置文件)

[3.1 cron 任务配置文件](#3.1 cron 任务配置文件)

[3.2 主配置文件](#3.2 主配置文件)

[3.3 I/O配置文件(可选)](#3.3 I/O配置文件(可选))

二、基本语法

三、常用选项与实战示例

[✅ 1. CPU 使用率(-u)](#✅ 1. CPU 使用率(-u))

[✅ 2. 内存使用(-r 或 -R)](#✅ 2. 内存使用(-r 或 -R))

[✅ 3. 交换分区使用(-S)](#✅ 3. 交换分区使用(-S))

[✅ 4. I/O 读写(-b 或 -d)](#✅ 4. I/O 读写(-b 或 -d))

[✅ 5. 网络接口(-n)](#✅ 5. 网络接口(-n))

[✅ 6. 负载与进程(-q, -w)](#✅ 6. 负载与进程(-q, -w))

[✅ 7. 队列与等待(-v)](#✅ 7. 队列与等待(-v))

四、高级用法

[✅ 1. 查看指定时间范围](#✅ 1. 查看指定时间范围)

[✅ 2. 生成每日报告](#✅ 2. 生成每日报告)

[✅ 3. 导出数据为 CSV](#✅ 3. 导出数据为 CSV)

[✅ 4. 一次性采集并保存](#✅ 4. 一次性采集并保存)

[✅ 5. 可视化分析​(Gnuplot)](#✅ 5. 可视化分析(Gnuplot))

五、常见问题排查场景

六、Sar常用命令速查表


SarSystem Activity Reporter)是 Linux 系统性能监控的核心工具,属于 sysstat软件包,能够实时或回溯分析 CPU、内存、磁盘 I/O、网络等系统资源的使用情况。以下是其核心功能与使用技巧。

topvmstat 等实时工具不同,sar 的最大优势在于:

  • 历史数据记录:可查看过去某时间段的系统状态。
  • 全面性:覆盖几乎所有系统资源。
  • 自动化 :默认通过 cron 定时采集数据。
  • 离线分析:支持导出和事后分析。

一、安装与启用

✅ 1. 安装 sysstat

复制代码
# CentOS 7/8/9, RHEL
sudo yum install sysstat -y
# 或
sudo dnf install sysstat -y

# Ubuntu/Debian
sudo apt install sysstat -y

✅ 2. 启用数据收集

安装后需确保 sysstat 服务已启用并运行:

复制代码
# 启用并启动服务
sudo systemctl enable sysstat
sudo systemctl start sysstat

📌 数据存储路径

默认日志文件位于 /var/log/sa/ 目录下:

  • /var/log/sa/saXX:二进制格式的每日数据(XX 为日期,如 sa15 表示 15 号)
  • /var/log/sa/sarXX:文本格式的每日报告(可选生成)

✅ 3.核心配置文件

3.1 cron 任务配置文件

/etc/cron.d/sysstat(或 /etc/cron.d/sysstat.cron

这是 sysstatcron 任务配置文件 ,定义了 sar 数据的采集频率。

常见内容(以 CentOS/RHEL 为例):

复制代码
# Run system activity accounting tool every 10 minutes
*/10 * * * * root /usr/lib64/sa/sa1 -S DISK
# Generate a daily summary of process accounting at 23:53
53 23 * * * root /usr/lib64/sa/sa2 -A
  • sa1默认每 10 分钟运行一次,采集数据并写入 /var/log/sa/saXX(二进制格式)。
  • sa2:每天 23:53 运行,生成文本报告 /var/log/sa/sarXX

修改采集频率 : 将 */10 改为 */5 表示每 5 分钟采集一次。


3.2 主配置文件

/etc/sysconfig/sysstat/etc/default/sysstatsysstat主配置文件,控制服务行为。

示例**(RHEL/CentOS):/etc/sysconfig/sysstat**

sar 命令默认保留 28天 的日志数据

复制代码
# How long to keep log files (in days).
HISTORY=30

# Whether to compress log files after 7 days.
COMPRESSAFTER=7

# Whether to create activity reports.
SADC_OPTIONS="-S DISK"

示例**(Ubuntu/Debian):/etc/default/sysstat**

复制代码
# Enable data collection: true or false
ENABLED="true"

# Keep log files for 7 days
HISTORY=7

# Compress logs older than 7 days
COMPRESSAFTER=7

3.3 I/O配置文件(可选)

/etc/sysconfig/sysstat.ioconf(可选),用于配置 I/O 统计的详细选项,如是否监控特定设备。

二、基本语法

复制代码
sar [选项] [间隔] [次数]
  • 选项 :指定监控的资源类型(如 -u CPU,-r 内存)。
  • 间隔:采样间隔(秒)。
  • 次数:采样次数。

示例:

复制代码
sar -u 2 5  # 每 2 秒采样一次,共 5 次,查看 CPU 使用率

三、常用选项与实战示例

✅ 1. CPU 使用率(-u)

复制代码
# 实时查看 CPU 使用
sar -u 2 5

# 查看历史数据(今天)
sar -u

# 查看指定日期(如 8 月 15 日)
sar -u -f /var/log/sa/sa15

输出字段:

  • %user:用户进程占用
  • %nice:低优先级进程
  • %system:内核进程
  • %iowait:I/O 等待
  • %steal:虚拟化环境下被抢占时间
  • %idle:空闲

🔍 重点关注 %iowait持续高于 10% 表示 I/O 瓶颈。


✅ 2. 内存使用(-r 或 -R)

复制代码
# 查看内存使用(-r)
sar -r 2 5

# 查看内存统计(-R)
sar -R

输出字段:

  • kbmemfree:空闲内存(KB)
  • kbmemused:已用内存
  • %memused:内存使用百分比
  • kbbuffers / kbcached:缓冲区和缓存

💡 注意 :Linux 会用空闲内存做缓存,所以 kbmemfree 小 ≠ 内存不足,应关注 %memusedsar -S(Swap 使用)。


✅ 3. 交换分区使用(-S)

复制代码
sar -S  # 查看 Swap 使用

输出:

  • kbswpfree:空闲 Swap
  • kbswpused:已用 Swap
  • %swpused:Swap 使用率

⚠️ Swap 使用率 > 0 表示物理内存不足,应优化内存或扩容。


✅ 4. I/O 读写(-b 或 -d)

复制代码
# 查看 I/O 传输速率(-b)
sar -b 2 5

# 查看设备 I/O 详情(-d)
sar -d 2 5

-b 输出:

  • tps:每秒传输次数(IOPS)
  • rtps:读操作
  • wtps:写操作
  • bread/s:每秒读取 KB
  • bwrtn/s:每秒写入 KB

-d 输出(需启用 --io-stats):

  • DEV:设备名
  • tps:每秒 I/O 次数
  • rkB/swkB/s:读写带宽
  • %util:设备利用率(>80% 表示瓶颈

🔧 配置 :确保 /etc/cron.d/sysstatSADC_OPTIONS 包含 -D 以启用设备统计。


✅ 5. 网络接口(-n)

复制代码
# 查看网络接口统计
sar -n DEV 2 5    # 接口流量
sar -n SOCK       # 套接字使用
sar -n TCP        # TCP 连接状态
sar -n ETCP       # TCP 错误

-n DEV 输出:

  • IFACE:接口名
  • rxpck/stxpck/s:每秒收发包数
  • rxkB/stxkB/s:每秒收发 KB
  • %ifutil:接口利用率(全双工可能 >100%)

📊 用途:排查网络拥塞、DDoS、连接泄漏。


✅ 6. 负载与进程(-q, -w)

复制代码
# 查看系统负载
sar -q

# 查看进程与线程创建
sar -w

-q 输出:

  • runq-sz:运行队列长度
  • %runocc:运行队列占用百分比
  • ldavg-1ldavg-5ldavg-15:1/5/15 分钟负载平均值

-w 输出:

  • proc/s:每秒创建进程数
  • cswch/s:每秒上下文切换次数

🔍 上下文切换过高可能导致 CPU 效率下降。


✅ 7. 队列与等待(-v)

复制代码
sar -v

输出:

  • dentunusd:未使用目录项
  • file-nr:打开文件数
  • inode-nr:inode 使用
  • pty-nr:伪终端数

🛠 用途 :排查 too many open files 错误。


四、高级用法

✅ 1. 查看指定时间范围

复制代码
# 查看 sa15 文件中 10:00-11:00 的数据
sar -u -s 10:00:00 -e 11:00:00 -f /var/log/sa/sa15
  • -s:开始时间
  • -e:结束时间

✅ 2. 生成每日报告

sysstat 默认在 /etc/cron.d/sysstat 中配置了每日报告生成:

复制代码
# 查看今天 sar 报告
sar -u
# 或
sar -f /var/log/sa/sa$(date +%d)

✅ 3. 导出数据为 CSV

复制代码
# 导出为逗号分隔格式
sar -u -f /var/log/sa/sa15 | grep "^[0-2]" | awk '{print $1","$4","$5","$6}' > cpu.csv

📈 可导入 Excel 或 Grafana 进行可视化。


✅ 4. 一次性采集并保存

复制代码
# 立即采集 10 次,每次 1 秒,保存到自定义文件
sar -o mydata 1 10
# 查看自定义数据
sar -f mydata -u

✅ 5. 可视化分析(Gnuplot)

​生成 CPU 使用率图表​​:

复制代码
sar -u -f /var/log/sa/sa15 | awk '/^[0-9]/ {print $1,100-$NF}' > cpu_idle.dat
gnuplot -e "set terminal png;plot 'cpu_idle.dat' using 1:2 with lines" > cpu_usage.png

PS:Gnuplot 介绍​

Gnuplot 是一款开源的命令行交互式科学绘图工具

复制代码
yum   -y  install  gnuplot   #CentOS7 安装

五、常见问题排查场景

问题 使用命令
CPU 高 sar -u -f /var/log/sa/saXX
内存不足 sar -r -S -f /var/log/sa/saXX
磁盘 I/O 高 sar -d -f /var/log/sa/saXX
网络慢 sar -n DEV -f /var/log/sa/saXX
负载高 sar -q -f /var/log/sa/saXX
频繁创建进程 sar -w -f /var/log/sa/saXX

六、Sar常用命令速查表

目的 命令
CPU 使用率 sar -u
内存使用 sar -r
Swap 使用 sar -S
I/O 统计 sar -bsar -d
网络流量 sar -n DEV
TCP 状态 sar -n TCP
系统负载 sar -q
上下文切换 sar -w
查看历史数据 sar -u -f /var/log/sa/sa15
指定时间范围 sar -u -s 09:00 -e 10:00 -f /var/log/sa/sa15
相关推荐
2301_794333912 小时前
实验室服务器配置|通过Docker实现Linux系统多用户隔离与安全防控
linux·服务器·docker·实验室
打码人的日常分享2 小时前
运维服务方案,运维巡检方案,运维安全保障方案文件
大数据·运维·安全·word·安全架构
荣光波比3 小时前
Nginx 实战系列(一)—— Web 核心概念、HTTP/HTTPS协议 与 Nginx 安装
linux·运维·服务器·nginx·云计算
武文斌773 小时前
单片机:DS18B20测温度、74HC595扩展芯片、8*8LED矩阵
运维·服务器·单片机·嵌入式硬件
fengfuyao9854 小时前
诊断并修复SSH连接Github时遇到的“connection closed“错误
运维·ssh·github
scugxl4 小时前
centos7 docker离线安装
运维·docker·容器
阿sir1984 小时前
ZYNQ 自定义IP
服务器·网络·tcp/ip
绿箭柠檬茶6 小时前
Ubuntu 使用 Samba 共享文件夹
linux·运维·ubuntu
工藤新一¹7 小时前
Linux —— 虚拟进程地址空间
linux·运维·服务器·c/c++·虚拟进程地址空间
Aspiresky7 小时前
浅析Linux内核scatter-gather list实现
linux·dma·scatter/gather