Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2079496
  • 博文数量: 470
  • 博客积分: 10206
  • 博客等级: 上将
  • 技术积分: 5620
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-03 12:50
文章分类

全部博文(470)

文章存档

2012年(1)

2011年(18)

2010年(47)

2009年(404)

分类:

2009-05-05 18:36:12

切入主题:

假如我知道有进程A、B、C、D,我想知道它们在后台是否都在正常的运行,
ps查看进程:
1.如果进程 A、B、C、D 都正常运行,则睡眠;
2.如果进程 A、B、C、D 中有进程不在运行,则启动不在运行的进程;

请大家集思广益,这个脚本折腾了3三个星期了,不知道如果下手写。

=========================================
个人想法:请大家修改:
新建个零时文件,包含想要监控的进程名称:pro_temp 内容包括:
A
B
C
D
#! /bin/bash
ps -ef|grep **|grep -v grep > tempfile
#假如文件tempfile包括:
A
C
diff  pro_temp tempfile|tail -n +2|tr -d '<' >tempfile1
#零时文件tempfile1内容:
B
D
#循环零时文件tempfile1,判断程序进程是否存在case循环中,如果在,则启动,
for LOOP in `cat tempfile1`
do
    case $LOOP in
         A)
           start A
           ;;
         B)
           start B
           ;;
          C)
           start C
           ;;
          D)
          start D
          ;;
          *)
          exit 0
          ;;      
    esac
    sleep 360
    rm -f tempfile
    rm -f tempfile1
done

问题:在shell脚本中,diff命令可以这么用吗???shell脚本中的diff命令如果对比系统中存在的文件。

[ 本帖最后由 ontherd 于 2009-4-14 15:11 编辑 ]



您对本贴的看法:
| |
版主   帅哥 (孩儿他爹㊞)
广告杀手-老法王



CU编号: 17255
注册:2002-8-26
最后登录: 2009-05-05
帖子:
精华:







来自:中国南京
状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-4-13 14:53 
参考/etc/rc.d/init.d中的任一脚本


(狼烟)
精灵王
披着狼皮的羊



CU编号: 547805
注册:2007-4-5
最后登录: 2009-05-05
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-4-14 18:46 


QUOTE:
原帖由 kwokcn 于 2009-4-14 18:12 发表
给你些想法:
1、脚本加到cron里定时启动检查即可,不需要一直sleep;
2、检查动作其实是一致的,所以可以把检查重启的操作写成function;
3、为提高灵活性,例子中的A、B、C、D可以写到config里,并加入程序 ...

临下班无事,按这个提供一个样例吧。

脚本(sed用来避免一些BUG,例如同时存在com和comA的进程,com没有启动时ps+grep com会因为comA启动而误判):

CODE:
#!/bin/sh

function proc_check() {

        if ps -ef | grep $1 | grep -v grep | sed -n "/[/ ]$1$/p" >/dev/null 2>&1 ; then
                return
        else
                nohup $2/$1 >> LOG &  # start proc
        fi

}

cat config | while read line;  # read config
do
        proc_check $line
done

config(第一个字段为程序名,第二个字段为程序所在目录路径,分隔符为空格或TAB):

CODE:
t1      /home/
t2      /home/1/
t3      /home/2/
t4      /home/

这个写的很简单,还有很多地方需要注意,服务监控还是细心些比较好。



您对本贴的看法:
| |
  帅哥
新手



CU编号: 1374062
注册:2009-4-13
最后登录: 2009-05-05
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-4-17 13:31 


QUOTE:
原帖由 haimming 于 2009-4-14 18:25 发表
我是DBA大侠的不合用吗?

合用,但是那样与分开监控没有什么区别,
先谢谢你们了。



您对本贴的看法:
| |
  帅哥
新手



CU编号: 1374062
注册:2009-4-13
最后登录: 2009-05-05
帖子:
精华:0







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-4-17 13:36 


QUOTE:
原帖由 kwokcn 于 2009-4-14 18:46 发表


临下班无事,按这个提供一个样例吧。

脚本(sed用来避免一些BUG,例如同时存在com和comA的进程,com没有启动时ps+grep com会因为comA启动而误判):

#!/bin/sh

function proc_check() {

       ...

非常感谢你!!!
你的举手之劳,可帮了小弟一个大忙了!!!



您对本贴的看法:
| |
  帅哥 (呆子)
荣誉版主-精灵使
3楼楼长


CU奥运火炬传递手2008
荣誉版主  
CU编号: 115226
注册:2003-11-27
最后登录: 2009-05-04
帖子:
精华:







状态:...离线...

[] [] [博客]


[]     顶部
发表于 2009-4-17 13:50 
解决了问题就好,有兴趣的话看看楼上建议的inittab。



您对本贴的看法:

__________________________________

世上有两种人
一种是痛苦的人   /\../\ ~..~
一种是快乐的猪    (@)  (@)
\~~~^..^  ^. .^~~~/
  (___(oo)   (oo)___)
阅读(2408) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~