sar不直接监控单个进程,但能长期记录系统级进程活动趋势,如进程创建率、上下文切换、运行队列长度和负载变化;默认每10分钟通过sadc采集数据至/var/log/sa/saXX。

sar 本身不直接监控“单个进程”的运行轨迹,但它能长期、稳定地记录系统级进程活动趋势——比如每秒创建多少进程、发生多少次上下文切换、运行队列有多长、负载压力如何变化。这些指标合起来,就是进程活跃度最核心的宏观画像。
开启并确认历史数据自动采集
系统默认通过 cron 每 10 分钟执行一次 sadc(sar 的数据采集后台)来写入二进制日志,路径为 /var/log/sa/saXX(XX 是当月日期)。要确保长期有效,先检查服务是否启用:
- 运行 systemctl status sysstat,确认状态为 active(running)
- 查看定时任务:cat /etc/cron.d/sysstat,确认存在类似 */10 * * * * root /usr/lib64/sa/sa1 1 1 的行
- 若未启用,执行 sudo systemctl enable --now sysstat
关注进程相关的核心指标命令
以下命令可实时采样,也可配合 -f 回溯历史,全部支持长期趋势分析:
- sar -q 600 288:每 10 分钟(600 秒)采一次,一天 288 次,持续观察 runq-sz(运行队列长度)和 ldavg-5(5 分钟负载均值),判断进程排队是否常态化
- sar -w 600 288:采集 pswitch/s(每秒进程切换次数)和 pgpgin/pgpgout(页换入/换出),高切换 + 高换页常意味着进程频繁抢占或内存紧张
- sar -c 600 288:监控 proc/s(每秒新创建进程数),突增可能对应批量任务启动、脚本误触发或异常 fork 行为
用历史文件做跨日趋势比对
日志默认保留 28 天(由 /etc/sysconfig/sysstat 中 HISTORY=28 控制),可直接比对多日同一时段:
- 查 9 月 20 日上午 10 点的进程队列:sar -q -f /var/log/sa/sa20 | grep "10:"
- 查 9 月 21 日同期的上下文切换:sar -w -f /var/log/sa/sa21 | grep "10:"
- 导出连续 7 天的 runq-sz 到 CSV(便于 Excel 或 Grafana 绘图):
for d in {19..25}; do echo "2026-09-$d $(sar -q -f /var/log/sa/sa$d | awk '/^[0-9]/ {print $3}')" ; done > runq_trend.csv
补充建议:搭配其他工具定位具体进程
sar 告诉你“进程活动变多了”,但不告诉你“哪个进程在作祟”。建议日常组合使用:
- 发现 runq-sz 持续 > CPU 核数 × 2,立刻跑 ps aux --sort=-%cpu | head -10 找高 CPU 进程
- 看到 proc/s 异常飙升,用 pidstat -c 1 5 查每秒新建进程的命令名
- 结合 sar -u 中的 %iowait 和 sar -d 中的 await,判断是否因 IO 阻塞导致大量进程卡在 uninterruptible 状态


















