CPU是一项重要的使用资源,接下来就是一个监控一定时间的CPU的使用情况,并找出长期占用的CPU进程进行优化,我们可以找到长期占用的,那么就是关于进程监视和日志记录的实践

ps命令用于收集系统中进程详细的信息

我们来监视并计算一个小时内CPU的使用情况的shell脚本

#! /bin/bash

SECS=3600

#将SECS更改了成需要进行监视的总秒数

UNIT_TIME=60

#时间间隔,秒为单位

STEPS=$(($SESC/$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

echo CPU eaters :

cat /tmp/cpu_usage.$$ | \

awk ‘

{ process[$1]+=$2; }

END {

for (i in process)

{

printf(“%-20s %s”,i,process[i]);

}

}’ | sort -nrk 2 | head

rm /tmp/cpu_usage.$$

#删除临时日志文件

主要的输入源是ps -eo comm,pcpu comm表示命令行,pcpu表示CPU使用率,我们会输出所有的进程名或者CPU使用率,每个进程使用一行输出,我们循环的进行这个命令,并把这些数据添加到文件/tmp/cpu_usages.$$中,60秒sleep 60来提供,这使得每一分钟执行一次PS

tail -n +2 用来将ps 输出中的头部和COMMAND&%CPU剥离

一小时后,我们就已经将脚本执行完毕了,我们直接读取/tmp/cpu_usage.$$,来打印每分钟的进城状态,然后用awk求出每个进程总的CPU使用情况,然后进程性作为索引,根据CPU的使用情况来逆序排序,获得前10项

发表评论

邮箱地址不会被公开。 必填项已用*标注