while 循环
2016-10-12
while 循环
while 循环常常用来写死循环脚本,用于监控某项服务。
简单的 while 脚本
[root@133 ~]# vim while.sh
#!/bin/bash
a=5
while [ $a -ge 1 ];do
echo $a
a=$[$a-1]
done
执行结果:
[root@133 ~]# sh while.sh
5
4
3
2
1
while 循环的格式:
while 条件; do
command
done
另外可以把循环条件用一个冒号代替,这样可以做到死循环:
while :; do
command
sleep 3
done
下面写一个判断系统负载的脚本:
[root@133 ~]# vim load.sh
#!/bin/bash
while :; do
load=`uptime|awk '{print $(NF-2)}'|cut -d. -f1`
if [ $load -gt 10 ];then
echo "system load is high."|mail -s "system load" test1@163.com
fi
sleep 10
done
说明:uptime 命令是用来查看系统负载的,我们用 awk 截取倒数第三段,也即是平均 1 分钟的系统负载,然后只取整数部分。如果负载高于 10 则会发邮件告警。每隔 10 秒检查一次。但是,如果系统负载一直高于 10,那么将会出现每隔 10s 发一次邮件的窘况,所以要采取手段避免这种情况发生。