Ax 列出1小时占用CPU最多的10个进程
a 编写脚本
#!/bin/bash
SECS=3600
UNIT_TIME=60
# SECS为监视的时间,单位是秒,上面以一小时为例
# UNIT_TIME为取样的时间间隔,上面以60秒为例
STEPS=$(( $SECS / $UNIT_TIME ))
echo Watching CPU usage... ;
for((i=0;i<STEPS;i++))
do
ps -eocomm,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.$$
# 删除临时的日志文件
b 执行结果
3600秒太难等了,我就把时间调整到10秒,有效果就行。
Bx 参考
[1] 《Linux Shell脚本攻略》第二版 Shantanu Tushar\Sarath Lakshman 著