shell 死循环

例1: 运行脚本后会自动加载firefox浏览器,并打开指定网页。如果用户关闭firefox,脚本会再次自动重新打开firefox。
     如需结束循环,中止t2.sh进程即可。注意不要同时执行两个t1.sh脚本,否则……
     若事先不知道脚本名,也可以通过类似于"pstree | grep firefox"的命令获知其进程树,找到其父进程名killall掉即可。
     或者使用类似于"ps -elf | grep firefox | grep -v grep| awk ‘{print $5}‘"的命令,查找firefox相关进程的父进程pid,选最小的一个干掉。

文件名:t1.sh
  测试方式:执行sh t1.sh &
  文件内容:
#!/bin/bash
while true
do
  /usr/bin/firefox http://www.baidu.com
  wait
done

###########################################################################

例2: 运行脚本后会检查、校正eth0网卡的IP设置等参数,并检查web程序(80端口)是否正常监听,否则自动加载默认的httpd服务。以后每隔5分钟检查一次。
  文件名:t2.sh
  测试方式:sh t2.sh &
  文件内容:
#!/bin/bash
while true
do
  NOWIP=`/sbin/ifconfig eth0 | grep ‘inet addr‘ | cut -d : -f2 | awk ‘{print $1}‘`
  if [ $NOWIP != ‘192.168.2.20‘ ] ; then
      /sbin/ifconfig eth0 192.168.2.20/24
      /sbin/ifconfig eth0 up
      /sbin/route add default gw 192.168.2.1
      echo -e ‘nameserver 192.168.2.1\nnameserver 202.106.0.20‘ > /etc/resolv.conf
  fi
  PNUM=`netstat -anptl | grep :80 | wc -l`
  if [ $PNUM  -eq 0 ] ; then
      /etc/init.d/httpd start
  fi
  sleep 5m
done

补充:
while语句
语法:
while 命令/条件
do
语句
done
 
机制:如果while后的命令执行成功,或条件真,则执行do和done之间的语句,执行完成后,再次判断while后的命令和条件;如果while后的命令执行失败,或条件为假,循环结束
 
例如:
while date
do
echo “aa”
done
 
特例:无条件循环
while true
do
语句
done

while可以用作无穷循环,很多地方都用到无穷循环。一个无穷循环如下所示:
while(true) { 
    循环内容; 
      ... 
 }
无穷循环可以由自己循环中的某个条件式来结束。下面是一个循环内部终止的例子:
while(true) {
    语句; 
      if(条件式) 
                break;  // 跳离循环
       ...
}

http://www.cublog.cn/u1/40349/showart_392705.html
http://wanghai.blog.51cto.com/770518/160642
http://edu.codepub.com/2009/0531/5100.php

时间: 2024-11-12 16:11:06

shell 死循环的相关文章

php-fpm经常出现502解决方法

更多请支持:http://www.webyang.net/Html/web/article_134.html 最近nginx经常502,解决502最好的办法就是重启php-fpm. 手动去重启还是比较麻烦的事情,最好的就是扔到shell里去. vim restart-php-fpm.sh #!/bin/sh SERVICE=\'php-fpm\' #if ps ax | grep -v grep | grep $SERVICE > /dev/null if netstat -anp | grep

shell脚本编程之“最简单的死循环”【转】

转自:http://blog.chinaunix.net/uid-23046336-id-3475462.html 在linux下编程的程序猿都知道shell脚本,就算你不怎么熟悉,也应该听过的吧!那在shell脚本中的死循环该怎么写呢? 对于熟悉C语言的猿人们来说,最简单的死循环应该这样写: ------------------------------------------------------------------------- while(1) { //do something }

shell基础之四:函数、死循环及for,while特殊用法

一:死循环 语法1:     while true;do            循环体            if CONDITION;then                break             fi      done 语法2:      until false;do             循环体              if CONDITION;then                  break              fi       done 就是一直循环直到某

shell实现死循环

参考自http://codingstandards.iteye.com/blog/780524 1.while true do command; done 2.while : do command; done 3.while [1] do command; done 4.while [0] do command done 5.while 条件 do command; done

shell脚本死循环判断nginx日志reqest_time时间大于3秒是否增加,若增加发送相关日志信息到开发人员

#!/bin/bash while [ 1 ] do pre_request_time_count=`cat /var/log/nginx/access.log |awk '{print $NF}'|awk -F '"' ' $2>3 '|awk -F '"' '{print $2}'|wc -l` # 取 request_tme 大于3秒的计数值 echo $pre_request_time_count sleep 300 last_request_time_count=`ca

shell脚本死循环检查是否有特定的路由,若存在进行删除操作

while [ 1 ] do tun0_route=`ip route |grep -ci "100.100.80.0"` if [ $tun0_route -eq 0 ];then echo "ip route for 100.100.80.0/24 via dev tun0 is not exist, it's normal status " >> /tmp/tun0_route.log else echo "ip route for 10

Shell实现跳板机,为什么用跳板机

整理自:http://blog.chinaunix.net/uid-22101889-id-3167454.html 注意:请谨慎使用,到现在为止,使用了,我还没找到改回去的方法. 1.     问题 第一.很多大公司的服务器都不允许直接登录,而是通过一个跳板机才能登录过去.在跳板机中,通常只能执行几个少数命令(如SSH),而其他命令是不允许执行的,那么怎样才能实现这个功能呢? 第二.一些小公司,由于服务器比较少,不需要什么跳板机之类的说法,公司的开发运维人员加起来也就那么十几二十人,通常大家都

linux shell基础语法

1.第一个Shell脚本 打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用php写shell 脚本,扩展名就用php好了. 输入一些代码: #!/bin/bash echo "Hello World !" "#!" 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种Shell.echo命令用于向窗口输出文本. 运行Shell脚本有两种方法. 1.1作为可执行程序 将上面的代码保存为t

shell编程中for,while,util,case,select,break, continue用法详解

关于shell脚本的更多详细实例讲解请参考:http://www.cnblogs.com/yuexiaxiaoxi/category/646749.html Shell编程中循环命令用于特定条件下决定某些语句重复执行的控制方式,有三种常用的循环语句:for.while和until.while循环和for循环属于"当型循环",而until属于"直到型循环".循环控制符:break和continue控制流程转向. 参考:<Linux 与unix shell 编程指