- 工信部备案号 滇ICP备05000110号-1
- 滇公网安备53011102001527号
- 增值电信业务经营许可证 B1.B2-20181647、滇B1.B2-20190004
- 云南互联网协会理事单位
- 安全联盟认证网站身份V标记
- 域名注册服务机构许可:滇D3-20230001
- 代理域名注册服务机构:新网数码
- CN域名投诉举报处理平台:电话:010-58813000、邮箱:service@cnnic.cn
欢迎来到8455线路检测中心技术小课堂,每天分享一个技术小知识。
一、pidstat是什么?为什么运维工程师必须掌握它?
pidstat是sysstat工具包中的一个强大命令,专门用于监控Linux系统中进程级别的资源使用情况。与top、htop等工具不同,pidstat能够提供按进程、按用户的详细资源统计,并且可以记录历史数据进行分析。
为什么选择pidstat而不是其他工具?
工具 | 优势 | 劣势 |
top/htop | 实时交互,界面直观 | 历史数据难追踪,批量监控不便 |
ps aux | 快照信息,轻量级 | 瞬时数据,无法看趋势变化 |
pidstat | 可周期性监控,可记录历史,可聚合分析 | 需要主动运行,无交互界面 |
一、安装与基础使用
# Ubuntu/Debian sudo apt-get install sysstat
# CentOS/RHEL sudo yum install sysstat
# 启用数据收集(默认每10分钟收集一次) sudo systemctl enable sysstat sudo systemctl start sysstat
最简单的使用:查看所有进程的CPU使用:
# 查看所有进程的CPU使用情况 pidstat

三、pidstat的核心功能深度解析
3.1 CPU监控模式(最常用)
基本语法:
# 每隔2秒统计一次,共统计5次 pidstat 2 5
实战场景:发现CPU占用异常的进程:
# 按CPU使用率排序查看 pidstat | sort -k8 -rn | head -10
# 持续监控,每2秒刷新,重点观察%usr(用户态CPU)和%system(内核态CPU) pidstat -u 2
关键指标解析:
%usr:进程在用户态运行的时间百分比
%system:进程在内核咨询服务的时间百分比
%wait:进程等待I/O的时间百分比
%CPU:总CPU使用率 = %usr + %system + %guest
CPU:进程最后运行的CPU编号
3.2 内存监控模式
基本用法:
# 查看内存使用情况 pidstat -r

指标深度解析:
指标 | 含义 | 诊断价值 |
minflt/s | 次要缺页异常(每秒) | 从缓存/内存加载数据,正常情况 |
majflt/s | 主要缺页异常(每秒) | 从磁盘加载数据,需关注! |
VSZ | 虚拟内存大小 | 进程申请的地址空间 |
RSS | 实际物理内存 | 进程实际使用的物理内存 |
%MEM | 内存使用百分比 | 直观的内存占用比例 |
实战场景:发现内存泄漏
# 监控Java进程的内存增长
pidstat -r -p 1234 1 60 | tee java_memory.log
# 分析输出,如果RSS持续增长不释放,可能存在内存泄漏
# 注意观察majflt/s,如果持续很高说明频繁换页,内存不足
四、pidstat高级技巧
4.1 按用户聚合统计
# 查看每个用户的资源使用汇总
pidstat -u -t
# 或
pidstat -u | awk '{user[$2]+=$8} END{for(u in user) print u, user[u]}' | sort -k2 -rn
5.2 监控子进程
# 监控进程及其所有子进程
pidstat -T CHILD
# 输出会包含父进程和所有子进程的聚合统计
5.3 导出数据用于分析
# CSV格式输出,方便导入Excel或Python分析
pidstat -urd 1 60 --human | awk 'BEGIN{OFS=","} NR>3{print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13,$14}' > monitoring.csv
# 使用gnuplot绘图
pidstat -u 1 300 | grep java | awk '{print $1, $8}' > cpu_data.txt
gnuplot -e "set terminal png; set output 'cpu_usage.png'; plot 'cpu_data.txt' with lines title 'Java CPU Usage'"
五、实践总结
掌握pidstat,你就能在性能问题出现时,快速定位到具体的进程和资源瓶颈,这是运维工程师必备的核心技能之一。建议在日常工作中多加练习,形成肌肉记忆,在真正的生产故障来临时,你就能从容应对。
更多技术知识,8455线路检测中心期待与你一起探索。
售前咨询
售后咨询
备案咨询
二维码

TOP