当前位置: 首页 > news >正文

Linux sar命令详细使用指南

目录

一、安装与启用

✅ 1. 安装 sysstat

✅ 2. 启用数据收集

✅ 3.核心配置文件

3.1 cron 任务配置文件

3.2 主配置文件

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

二、基本语法

三、常用选项与实战示例

✅ 1. CPU 使用率(-u)

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

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

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

✅ 5. 网络接口(-n)

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

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

四、高级用法

✅ 1. 查看指定时间范围

✅ 2. 生成每日报告

✅ 3. 导出数据为 CSV

✅ 4. 一次性采集并保存

✅ 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 -b 或 sar -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
http://www.xdnf.cn/news/1312147.html

相关文章:

  • Qt 动态属性(Dynamic Property)详解
  • Qt 关于QString和std::string数据截断的问题- 遇到\0或者0x00如何处理?
  • 【经典上穿突破】副图/选股指标,双均线交叉原理,对价格波动反应灵敏,适合捕捉短期启动点
  • [1Prompt1Story] 注意力机制增强 IPCA | 去噪神经网络 UNet | U型架构分步去噪
  • PowerShell 第11章:过滤和比较(上)
  • 云安全 - The Big IAM Challenge
  • 二分查找。。
  • 智能合约:区块链时代的“数字契约革命”
  • AutoDL使用学习
  • 【Java web】Servlet 详解
  • CUDA 编程笔记:CUDA延迟隐藏
  • [优选算法专题二滑动窗口——最大连续1的个数 III]
  • huggingface TRL中是怎么获取参考模型的输出的
  • Swift 实战:实现一个简化版的 Twitter(LeetCode 355)
  • 新手向:GitCode疑难问题诊疗
  • Java 10 新特性及具体应用
  • 嵌入式硬件篇---电感串并联
  • 2^{-53} 单位舍入误差、机器精度、舍入的最大相对误差界限
  • 实例分割-动手学计算机视觉13
  • docker安装mongodb及java连接实战
  • Effective C++ 条款45:运用成员函数模板接受所有兼容类型
  • Linux怎么查看服务器开放和启用的端口
  • 【原理】C# 字段、属性对比及其底层实现
  • illustrator插件大全 免费插件介绍 Ai设计插件集合 (3)
  • Python语言一键整理xhs评论 基于github的开源项目 MediaCrawler
  • Linux进程概念(四)环境地址变量
  • 同创物流学习记录2·电车
  • 链式二叉树的基本操作——遍历
  • 实时计算 记录
  • 美国服务器环境下Windows容器工作负载基于指标的自动扩缩