列举出一小时内占用的cpu最多的10个进程

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> /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/0         14.4
init                14.4
kworker/0:0         8

2. 列出网络上所有的活动主机

#!/bin/bash

for ip in 192.168.123.{1..255};
do
    (
        ping $ip -c2 &> /dev/null;
        if [ $? -eq 0 ];
        then
        echo $ip is alive
        fi
    )&
done
wait

测试结果

192.168.123.22 is alive
192.168.123.16 is alive
192.168.123.26 is alive
192.168.123.28 is alive
192.168.123.30 is alive
192.168.123.31 is alive
192.168.123.33 is alive
192.168.123.41 is alive
192.168.123.43 is alive
192.168.123.46 is alive
192.168.123.47 is alive
192.168.123.44 is alive
192.168.123.49 is alive
192.168.123.50 is alive
192.168.123.54 is alive
192.168.123.55 is alive
192.168.123.56 is alive
192.168.123.59 is alive
192.168.123.57 is alive
192.168.123.58 is alive
192.168.123.62 is alive
192.168.123.64 is alive
192.168.123.65 is alive
192.168.123.66 is alive
192.168.123.67 is alive
192.168.123.71 is alive

总结

       本篇博文给了两个shell编程实例,两个都很简单,主要是在本人实际的开发中都曾用到过这两个类似的实例,后续博文中还会涉及到一些有关系统监控方面的东西,通过使用shell,给我最大的感受就是很实用,很方便,好了,本篇博文到此结束。

如果需要,请注明转载,多谢


 

你可能感兴趣的:(列举出一小时内占用的cpu最多的10个进程)