CPU是一种很重要的资源,如果能够跟踪某个阶段内占用的CPU最多的进程,通过监视一段时间内的CPU使用情况,我们可以找出长期占用CPU的进程并对其进行优化,提高CPU使用效率,我们知道ps指令适用于收集进程详细信息,接下来我们就来通过使用ps指令来监视并计算一分钟内CPU使用情况,shell代码如下:
#!/bin/bash
SECS=60
UNIT_TIME=5
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
echo CPU eaters:
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.$$
测试结果
CPU eaters:
glance-registry 321.5
glance-api 246.5
polkitd 63.6
dbus-daemon 34.8
console-kit-dae 32.4
su 23
NetworkManager 18
ksoftirqd/