ZBLOG

如何查看一个进程过去1小时的CPU利用率

要查看一个进程过去1小时的CPU利用率,通常需要结合监控工具或日志记录来实现。以下是几种常见方法:


方法1:使用 sar(需安装 sysstat

sar 是系统活动报告工具,可以记录历史资源使用情况。

1. 确保已安装并配置 sysstat

  1. sudo apt-get install sysstat # Ubuntu/Debian
  2. sudo yum install sysstat # CentOS/RHEL

编辑 /etc/default/sysstat(Debian)或 /etc/sysconfig/sysstat(RHEL),启用日志记录:

  1. ENABLED="true"

2. 查看过去1小时特定进程的CPU使用率

  1. # 先获取进程PID(例如nginx)
  2. pid=$(pgrep -f nginx | head -n 1)
  3. # 查询该进程过去1小时的CPU利用率(-q可显示具体命令)
  4. sar -u -p ALL -f /var/log/sa/sa$(date +%d -d "1 hour ago") | grep -i "$pid"

方法2:使用 pidstat(短期监控)

如果进程仍在运行,可以用 pidstat 回溯统计:

  1. # 每10秒采样一次,持续6次(共1分钟示例,调整次数可覆盖更长时间)
  2. pidstat -p <PID> 10 6 | awk '{print $4}' # %CPU列

方法3:通过 top/htop 日志记录

提前配置 top 输出到日志文件:

  1. # 记录到文件(按需调整间隔和次数)
  2. for i in {1..60}; do top -b -n1 -p <PID> >> /tmp/cpu.log; sleep 60; done
  3. # 分析日志
  4. grep "<PID>" /tmp/cpu.log | awk '{print $9}'

方法4:外部监控工具

  • Prometheus + Grafana:配置进程 exporter 长期监控。
  • Datadog/New Relic:商业APM工具,支持历史回溯。

注意事项

  • 时间范围灵活性:精确的“过去1小时”需要依赖已有监控数据。
  • 权限要求:可能需要 root 权限访问系统日志。
  • 无历史数据时:若未提前记录,只能从当前时间点开始监控。

如果需要实时监控未来1小时,可以使用脚本定期采样存储数据。例如:

  1. #!/bin/bash
  2. pid=<YOUR_PID>
  3. logfile="/tmp/cpu_usage.log"
  4. end=$((SECONDS+3600)) # 1小时后停止
  5. while [ $SECONDS -lt $end ]; do
  6. echo "$(date '+%H:%M:%S') $(ps -p $pid -o %cpu=)" >> $logfile
  7. sleep 60 # 每分钟记录一次
  8. done

根据实际需求选择合适的方法!


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23549

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?