You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何每2秒获取基于前2秒聚合的Top CPU占用进程?

每2秒获取基于前2秒聚合的Top CPU进程解决办法

问题根源

top的首次输出是即时的CPU快照,不会按照-d指定的2秒间隔做使用率聚合;只有从第二次刷新开始,才会计算两次刷新之间(也就是前2秒)的CPU使用率。

直接可用的脚本

修改循环逻辑,让top执行两次刷新,跳过第一次的无效结果,只保留第二次的聚合数据:

while true; do
    # 执行2次top刷新,过滤出第二次的进程统计部分(表头+前10个进程)
    top -n 2 -d 2 | grep -A11 "PID USER"
    # 用分隔线区分每次的采样结果,方便日志阅读
    echo "========================================"
    # 无需额外sleep,top的两次刷新已经耗时2秒
done > top_cpu_users

脚本细节解释

  • -n 2:让top完成2次完整的输出循环
  • -d 2:设置刷新间隔为2秒,第二次输出就是基于这2秒的CPU使用率聚合值
  • grep -A11 "PID USER":精准匹配进程列表的表头行,同时取后续11行,刚好对应原来head -n12的输出内容(表头+10个进程)

另一种简化写法(仅保留进程数据)

如果不需要每次都输出表头,可以用awk定位进程行:

while true; do
    # 跳过首次输出和第二次输出的头部内容,直接提取进程行
    top -n 2 -d 2 | awk 'NR>17 && NR<=27'
    echo "========================================"
done > top_cpu_users

注意:NR>17 && NR<=27是基于默认top输出的行号调整的,不同系统可能有差异,你可以自己运行top -n1数清楚进程列表的起始和结束行号后再修改。

内容的提问来源于stack exchange,提问作者lmat - Reinstate Monica

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 15:50:26