首页 > 技术文章 > linux 统计一小时cpu进程占用情况

xiangbing123 2021-07-27 11:23 原文

#! /bin/bash
#文件名:pcpu_usage.sh
#用途:计算1个小时内进程的CPU占用情况

SECS=3600
UNIT_TIME=60

#将SECS更改成需要进行监视的总秒数
#UNIT_TIME是取样的时间间隔,单位是秒

STEPS=$(( $SECS / $UNIT_TIME ))

echo Watching CPU usage...

for((i=0;i<STEPS;i++))
do
  ps -eo comm,pcpu | tail -n +2 >> /tmp/cpu_usage.$$
  sleep $UNIT_TIME

done

echo CPU eaters

#使用一个关联数组统计CPU使用情况,以进程名作为数组索引,逆序排序,通过head获取前10项。

cat /tmp/cpu_usage.$$ | \
awk '{ process[$1]+=$2 }
  END{
    for( i in process )
    {

      printf("%-20s%s\n",i,process[i])
    }
}' | sort -nrk 2 | head

#删除临时日志文件
rm /tmp/cpu_usage.$$

推荐阅读