要查看一个进程过去1小时的CPU利用率,通常需要结合监控工具或日志记录来实现。以下是几种常见方法:
方法1:使用 sar
(需安装 sysstat
)
sar
是系统活动报告工具,可以记录历史资源使用情况。
1. 确保已安装并配置 sysstat
sudo apt-get install sysstat # Ubuntu/Debian
sudo yum install sysstat # CentOS/RHEL
编辑 /etc/default/sysstat
(Debian)或 /etc/sysconfig/sysstat
(RHEL),启用日志记录:
ENABLED="true"
2. 查看过去1小时特定进程的CPU使用率
# 先获取进程PID(例如nginx)
pid=$(pgrep -f nginx | head -n 1)
# 查询该进程过去1小时的CPU利用率(-q可显示具体命令)
sar -u -p ALL -f /var/log/sa/sa$(date +%d -d "1 hour ago") | grep -i "$pid"
方法2:使用 pidstat
(短期监控)
如果进程仍在运行,可以用 pidstat
回溯统计:
# 每10秒采样一次,持续6次(共1分钟示例,调整次数可覆盖更长时间)
pidstat -p <PID> 10 6 | awk '{print $4}' # %CPU列
方法3:通过 top/htop
日志记录
提前配置 top
输出到日志文件:
# 记录到文件(按需调整间隔和次数)
for i in {1..60}; do top -b -n1 -p <PID> >> /tmp/cpu.log; sleep 60; done
# 分析日志
grep "<PID>" /tmp/cpu.log | awk '{print $9}'
方法4:外部监控工具
- Prometheus + Grafana:配置进程 exporter 长期监控。
- Datadog/New Relic:商业APM工具,支持历史回溯。
注意事项
- 时间范围灵活性:精确的“过去1小时”需要依赖已有监控数据。
- 权限要求:可能需要
root
权限访问系统日志。 - 无历史数据时:若未提前记录,只能从当前时间点开始监控。
如果需要实时监控未来1小时,可以使用脚本定期采样存储数据。例如:
#!/bin/bash
pid=<YOUR_PID>
logfile="/tmp/cpu_usage.log"
end=$((SECONDS+3600)) # 1小时后停止
while [ $SECONDS -lt $end ]; do
echo "$(date '+%H:%M:%S') $(ps -p $pid -o %cpu=)" >> $logfile
sleep 60 # 每分钟记录一次
done
根据实际需求选择合适的方法!
内容由零声教学AI助手提供,问题来源于学员提问