免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4225 | 回复: 5
打印 上一主题 下一主题

[服务应用] 系统重启后,含有while死循环的脚本如何运行成功? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-11-21 14:40 |只看该作者 |倒序浏览
原理机制:
有两个shell脚本, 1个是用来每5分钟ping一次百度, 然后把结果写入文本文件; 另外一个是每隔8分钟来读取该文本文件中出现"网络故障"的次数, 如果超过2次以上的"网络故障"则重启系统, 这两个脚本都是用while死循环体来控制时间间隔. 这两个脚本可以通过测试.

遇到问题:
我把这两个shell脚本放到开机启动项中(/etc/rc.local)出现问题, 发现重启后这两个脚本只有pingReboot1.sh的线程启动了, 而第二个未启动.

下面是我写的shell脚本命令:
  1. #!/bin/sh -e
  2. #
  3. # rc.local
  4. #
  5. /home/ken/pingReboot1.sh
  6. /home/ken/pingReboot2.sh
  7. exit 0
复制代码
详细
下面是第一个脚本单独执行的情况, while死循环, 每5分钟ping百度(报错是因为我关闭了网络), 在终端执行该脚本后就是一直卡住(因为是死循环), 我需要打开另一个终端才能运行第二个脚本pingReboot2.sh.
  1. root@ubuntu:# ./pingReboot1.sh
  2. ping: unknown host www.baidu.com
复制代码
暂时想不到除了用whille死循环以外的方式, 曾经考虑过crontab, 但是不知道什么原因好像并不执行:

  1. 5 * * * * root /home/ken/pingReboot1.sh
  2. 8 * * * * root /home/ken/pingReboot2.sh
复制代码

论坛徽章:
2
2015年亚洲杯之伊拉克
日期:2015-04-13 10:55:1115-16赛季CBA联赛之山西
日期:2016-05-16 09:54:41
2 [报告]
发表于 2014-11-21 17:40 |只看该作者
本帖最后由 little_angel 于 2014-11-21 17:46 编辑

为什么不写成一个脚本,使用while与for结合使用呢?

运行不起来,检查下文件权限,

参考:http://blog.itpub.net/23169974/viewspace-752480/

论坛徽章:
0
3 [报告]
发表于 2014-11-22 00:33 |只看该作者
little_angel 发表于 2014-11-21 17:40
为什么不写成一个脚本,使用while与for结合使用呢?

运行不起来,检查下文件权限,


while与for结合使用值得参考, 文件权限是root, 难道是因为这个原因? god!!

论坛徽章:
0
4 [报告]
发表于 2014-11-22 20:30 |只看该作者
  1. nohup /home/ken/pingReboot1.sh &
复制代码
  1. trap 1
  2. /home/ken/pingReboot1.sh &
复制代码

论坛徽章:
0
5 [报告]
发表于 2014-11-24 11:01 |只看该作者
yanu 发表于 2014-11-22 20:30


大神, 用了你的方法还是不成功, 两个脚本开机后都运行不成功, 其中第一条脚本只是有线程而并没被执行.
看来要考虑把两条脚本合并,while与for结合了

另外想问下, 怎样保证crontab能运行? crontab是否也是开机后就自动运行呢

论坛徽章:
0
6 [报告]
发表于 2014-11-24 22:37 |只看该作者
@程序员JZ

首先区分是rc.local/crontab没有执行,还是脚本在rc.local/crontab中运行不正常.
在脚本头部加上touch /tmp/testfile ,然后看有没有生成 /tmp/testfile这个文件
如果没有生成这个文件,要查看对应的服务是不是没有启动, 如果是加到rc.local里,还要看rc.local里这条命令之前的任务是不是一直没有跑完.

如果生成了testfile,那么脚本就是被执行过了.
脚本放到rc.local/crontab里面执行的结果和手动执行的不同,主要可能是两个方面的原因,
一是环境变量问题,比如ping命令可能在/sbin下,而crontab的默认PATH里只有/bin
二是脚本里可能有交互式的命令,比如ssh.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP