要查看服务器CPU的最高使用记录,由于Linux系统本身不会默认长期保存“历史最高CPU使用率”,因此需要结合实时监控工具、日志记录或性能监控软件来实现。以下是几种常见的方法:
方法一:使用 sar 命令(推荐)
sar 是系统性能分析工具(属于 sysstat 包),可以记录并查询历史CPU使用情况。
1. 安装 sysstat(如未安装)
# Ubuntu/Debian
sudo apt-get install sysstat
# CentOS/RHEL/Rocky Linux
sudo yum install sysstat
# 或者
sudo dnf install sysstat
2. 启用并配置 sysstat 记录
编辑配置文件启用数据收集:
sudo vim /etc/default/sysstat
确保 ENABLED="true"
启动并启用服务:
sudo systemctl enable sysstat
sudo systemctl start sysstat
3. 查看历史CPU使用情况
# 查看今天的CPU使用情况
sar -u
# 查看某一天的数据(例如昨天)
sar -u -f /var/log/sysstat/saXX # XX是日期,如 sa05 表示5号
4. 找出最高CPU使用率
你可以导出数据并用脚本处理,例如:
sar -u | awk 'NR>3 && $8!="AM" && $8!="PM" {print $8}' | sort -n | tail -1
这会输出最低空闲率(即最高使用率):$8 是 %idle,所以最小的 %idle 对应最高的 CPU 使用率。
更准确的方式:
# 计算CPU使用率 = 100 - %idle,并找出最大值
sar -u | awk 'NR>3 && $8 ~ /^[0-9]/ {usage=100-$8; if(usage>max) max=usage} END{print "Max CPU Usage: " max"%"}'
方法二:使用 top 或 htop 实时观察(无法查历史)
适用于当前实时监控,但不能查看历史最高记录。
top
# 按 1 查看每个核心
# 按 P 按CPU排序
或使用 htop(更友好):
htop
⚠️ 注意:这些工具不保存历史数据。
方法三:使用 mpstat(来自 sysstat)
查看详细CPU统计:
mpstat -P ALL 1 5 # 每秒采样一次,共5次
可用于脚本中定期采集并记录最大值。
方法四:自定义脚本 + 日志记录(长期监控)
编写脚本定期记录CPU使用率,并保存最大值。
示例脚本:
#!/bin/bash
LOG_FILE="/var/log/cpu_max.log"
CURRENT_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}' | cut -d'%' -f1)
MAX_USAGE=$(awk 'BEGIN{max=0} $1>max{max=$1} END{print max}' "$LOG_FILE" 2>/dev/null || echo 0)
# 更新最大值
if (( $(echo "$CURRENT_USAGE > $MAX_USAGE" | bc -l) )); then
echo "$CURRENT_USAGE" > "$LOG_FILE"
echo "New CPU usage high: $CURRENT_USAGE% at $(date)" >> /var/log/cpu_history.log
fi
配合 cron 每分钟运行一次。
方法五:使用专业监控工具(推荐用于生产环境)
- Prometheus + Node Exporter + Grafana:可视化展示CPU趋势,可查询历史峰值。
- Zabbix、Nagios、Datadog 等:自动记录并告警高负载。
总结
| 方法 | 是否能查历史最高 | 说明 |
|---|---|---|
sar |
✅ 强烈推荐 | 需提前开启 sysstat |
top / htop |
❌ | 仅实时查看 |
mpstat |
⚠️ 可临时分析 | 不自动存历史 |
| 自定义脚本 | ✅ | 需手动部署 |
| Prometheus等 | ✅✅✅ | 生产环境最佳 |
🔔 提示:若你之前未开启
sysstat,则无法查看过去的历史数据。建议现在就安装并启用,以便未来分析。
如有具体需求(如“过去一周的CPU最高使用率”),可进一步提供系统环境,我可以给出更精确命令。
云小栈