shell编程(2)

杨乾成 

一、1到1000的平方和

这道题比较简单,就不加赘述了。代码如下:

1 #!/bin/bash
2 i=1
3 count=0 
4 while [ $i -le 1000 ]
5 do
6     let count+=i*i
7     let i++
8 done
9 echo "1到1000的平方和是$count"

运行结果如下:

二、杀死进程

题目:创建一个SHELL程序,若当前shell的任意子进程的内存(或CUP)占用率超过50%,则将其杀死。

首先,使用下面的代码查看当前进程的ID:

ppid=`echo $$`

然后将当前内存或者CPU使用率大于50%的,输出到文件pid1

top -bn 1|grep "^*[1-9]"|awk '{if($9>50||$10>50) print $1}'>>pid1

然后查看当前shell进程的子进程id,输入到文件pid2

ps axo ppid,pid|awk '{if($ppid==$1) print $2}'>>pid2

然后比较两个文件中id相同的,就是要找的进程:

for id in `grep -wf pid1 pid2`
do
     kill $id
done

 

三、补充作业

题目:扫描局域网内的IP地址,分别将与当前主机连通的IP和非连通的IP放入文件connected.txt和disconnected.txt中。 这道题也比较简单,直接上代码:

#!/bin/bash
for ip in {1..254}
do
    ping -c 2 -i 0.3 -w 1 10.131.147.$ip &>/dev/null
    if [ $? -eq 0 ]
    then
        echo "10.131.147.$ip" >>connected.txt
    else
        echo "10.131.147.$ip" >>disconnected.txt
    fi
done
原文地址:https://www.cnblogs.com/blogMorningStar/p/11980195.html