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/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个进程,布布扣,bubuko.com
原文:http://blog.csdn.net/zmyer/article/details/21047527