例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

shell 死循环的更多相关文章

  1. shell死循环脚本示例

    1.设计一个脚本,监控远程的一台机器(假设ip为192.168.0.28)的存活状态,当发现宕机时发一封邮件给你自己. 提示:1. 你可以使用ping命令   ping -c10 www.baidu. ...

  2. 【运维技术】shell脚本实现线程挂掉,自动重启功能

    由于分布式系统的流行,服务器上面部署的项目都是多实例的.而我又希望有一个功能,当服务器出现异常情况能够自动重启实例. 所以我想到了使用shell脚本监控实例进程id,如果不存在的话,就重启对应的实例. ...

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

    转自:http://blog.chinaunix.net/uid-23046336-id-3475462.html 在linux下编程的程序猿都知道shell脚本,就算你不怎么熟悉,也应该听过的吧!那 ...

  4. shell编程之while死循环

    原文 在linux下编程的程序猿都知道shell脚本,就算你不怎么熟悉,也应该听过的吧!那在shell脚本中的死循环该怎么写呢? 对于熟悉C语言的猿人们来说,最简单的死循环应该这样写: ------- ...

  5. shell实现死循环

    参考自http://codingstandards.iteye.com/blog/780524 .while true do command; done .while : do command; do ...

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

    while [ 1 ] do tun0_route=`ip route |grep -ci "100.100.80.0"` if [ $tun0_route -eq 0 ];the ...

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

    #!/bin/bash while [ 1 ] do pre_request_time_count=`cat /var/log/nginx/access.log |awk '{print $NF}'| ...

  8. Linux shell脚本编程(三)

    Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...

  9. shell编程:定义简单标准命令集

    shell是用户操作接口的意思,操作系统运行起来后都会给用户提供一个操作界面,这个界面就叫shell,用户可以通过shell来调用操作系统内部的复杂实现,而shell编程就是在shell层次上进行编程 ...

随机推荐

  1. 该项目中不存在目标 precomputecompiletypescript The target "PreComputeCompileTypeScript" does not exist in the project

    Open Microsoft.TypeScript.targets file located under C:\Program Files (x86)\MSBuild\Microsoft\Visual ...

  2. iOS 中的传值方式

    一. 属性传值   将A页面所拥有的信息通过属性传递到B页面使用 很常用的传值,也很方便,但是要拿到类的属性.例如: B页面定义了一个naviTitle属性,在A页面中直接通过属性赋值将A页面中的值传 ...

  3. <body>标签,网页上显示的内容放在这里

    在网页上要展示出来的页面内容一定要放在body标签中.如下图是一个新闻文章的网页. 在浏览器中的显示效果: 示例: <!DOCTYPE HTML> <html> <hea ...

  4. 用BroadcastReceiver监听网络状态的变化

    在用户浏览网络信息时,如果网络突然断开,可以及时的提醒用户网络已断开.要实现这个功能,我们可以实现一个广播接收者来接收网络状态改变的广播,当由连接状态变为断开状态时,系统会发送一条广播,广播接收者接收 ...

  5. TCP/IP-入门

    Life is not a rehearsal "人生没有彩排" 参考资料:TCP/IP入门经典 (第五版) TCP/IP详解 卷一:协议 一.什么是TCP/IP TCP/IP是一 ...

  6. 实用iPhone Cydia插件

      BadgeClear(角标清除):可以清除App推送所在图标右上角出现的红色角标.在桌面长按图标后,图标开始左右摇动,再双击图标即可清除点击的图标角标.   Bitesms(短信):收费插件,具有 ...

  7. PHP引用(&)详解

    PHP的引用(就是变量.函数.对象等前面加上&符号) 在PHP 中引用的意思是:不同的名字访问同一个变量内容. 变量的引用 PHP 的引用允许你用两个变量来指向同一个内容 //打印数组 fun ...

  8. MLlib-协同过滤

    协同过滤 显示vs隐式反馈 参数调整 实例 教程 协同过滤 协同过滤是推荐系统的常用方法.可以填充user-item相关矩阵中的缺失值.MLlib支持基于模型的协同过滤,即使用能够预测缺失值的一个隐藏 ...

  9. Xcode7调试-b

    Xcode7中苹果为我们增加了两个重要的debug相关功能.了解之后觉得非常实用,介绍给大家. 1.Address Sanitizer: 妈妈再也不用担心 EXC_BAD_ACCESS? EXC_BA ...

  10. 生成MyEclipse6.5&7.5&8.0注册码的java源码

    //运行后即可得到注册码 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRe ...