[打印] [收藏] [本帖文本页] [推荐此主题给朋友]

shell编程中循环语句问题-LMLPHP

帖子
4 
主题
1 
精华
0 
可用积分
7  
专家积分
0 (本版:0)
在线时间
1 小时 
注册时间
2010-04-27 
最后登录
2010-07-23 

状态:...当前离线...

[微博] [博客] [短信]


求助,,,

一个shell编程中的循环问题。。

例如一直监控httpd服务,,,查看服务用ps aux|grep httpd.

实现目标。在脚本中使用循环语句一直监控httpd服务,,如果发现httpd服务down了,,立即启动/etc/init.d/heartbeat。。我了解到循环语句有for,while等,,但参数不知道是什么,,,求各位大侠了啊~~~


shell编程中循环语句问题-LMLPHP

帖子
1859 
主题
75 
精华
0 
可用积分
1391  
专家积分
75 (本版:0)
在线时间
1044 小时 
注册时间
2007-09-29 
最后登录
2010-07-25 

状态:...当前离线...

[微博] [博客] [短信]


本帖最后由 mgqw 于 2010-07-23 11:07 编辑
  1. #!/bin/sh

  2. while [ 1 ]
  3. do
  4.     a=$(pgrep httpd)
  5.     if [ -z $a ]
  6.     then
  7.         /etc/init.d /heartbeat
  8.     else
  9.         echo "The httpd is running"
  10.     fi
  11.     sleep 1
  12. done
复制代码


shell编程中循环语句问题-LMLPHP

帖子
4 
主题
1 
精华
0 
可用积分
7  
专家积分
0 (本版:0)
在线时间
1 小时 
注册时间
2010-04-27 
最后登录
2010-07-23 

状态:...当前离线...

[微博] [博客] [短信]


这个我试过了

while [ $program ]

do 

  echo :"The httpd is running"

done

但不行,,关键是[  ] 里面的参数变成$program后还有那些参数需要添加???


shell编程中循环语句问题-LMLPHP

帖子
1859 
主题
75 
精华
0 
可用积分
1391  
专家积分
75 (本版:0)
在线时间
1044 小时 
注册时间
2007-09-29 
最后登录
2010-07-25 

状态:...当前离线...

[微博] [博客] [短信]


回复 3# ccie-li 


    全部的程序都给你写出来了, 你的思路有问题


shell编程中循环语句问题-LMLPHP

帖子
1859 
主题
75 
精华
0 
可用积分
1391  
专家积分
75 (本版:0)
在线时间
1044 小时 
注册时间
2007-09-29 
最后登录
2010-07-25 

状态:...当前离线...

[微博] [博客] [短信]


本帖最后由 mgqw 于 2010-07-23 11:07 编辑

回复 1# ccie-li 


    或者是这样也行
  1. #!/bin/sh

  2. while [ 1 ]
  3. do
  4.     pgrep httpd
  5.     if [ $? -eq 1 ]
  6.     then
  7.         /etc/init.d /heartbeat
  8.     else
  9.         echo "The httpd is running"
  10.     fi
  11.     sleep 1
  12. done
复制代码



shell编程中循环语句问题-LMLPHP

帖子
1051 
主题
86 
精华
0 
可用积分
2118  
专家积分
10 (本版:10)
在线时间
354 小时 
注册时间
2006-08-25 
最后登录
2010-07-25 

状态:...当前离线...

[微博] [博客] [短信]


放到cronjob中
  1. #! /usr/bin/bash

  2. if [[ `/usr/ucb/ps aux|grep httpd|grep -v grep` ]] ; then
  3.    echo "fine"
  4. else
  5.     echo /etc/init.d/heartbeat
  6. fi
复制代码
成功后,去掉第二个echo.
其实我以前更喜欢用pidof  功能和pgrep一模一样, 唯一的区别就是 pidof必须要有root权限和root的环境变量才能执行

10-16 19:30