代码人生的小狗窝

一行行枯燥的代码,却描绘出人生的点点滴滴

您现在的位置是:首页>_AIX

AIX sh脚本,该如何处理

发布时间:2019-11-21浏览(1662)

    AIX sh脚本
    我有6个进程proc -i 1, proc-i 2,proc -i 3, proc -i 4,proc -i 5, proc-i 6
    我想一次性把他们拉起来,并且有掉的时候能自动拉起来
    #!/bin/ksh

    while true
    do
    var1=$(ps -ef | grep "sztcorc -i 1" |grep -v grep)
        if [ "$var1" ];then
         echo "进程1存在,......"
     sleep 3

        else
            echo "进程1不存在,将启动......"
     cd /sztc/sztc/bin
            ./sztcorc -i 1 
     sleep 5
        fi
        var2=$(ps -ef | grep "sztcorc -i 2" |grep -v grep)
        if [ "$var2" ];then
         echo "进程2存在,......"
     sleep 3

        else
            echo "进程2不存在,将启动......"
     cd /sztc/sztc/bin
            ./sztcorc -i 2 
     sleep 5
        fi

    done
    我写的这种不成功,不是太熟这个,不知道怎么写,请教大家
    ------解决方案--------------------
    #!/bin/ksh

    while true
    do
       ps -ef 
    ------解决方案--------------------
     grep "sztcorc -i 1" 
    ------解决方案--------------------
    grep -v grep
      if [ $? -eq 0 ];then
      echo "进程1存在,......"
    sleep 3

      else
      echo "进程1不存在,将启动......"
    cd /sztc/sztc/bin
      ./sztcorc -i 1 
    sleep 5
      fi
    done
    上面的办法是利用shell执行结果$?来判断进程是否存在。

    还有一种办法是计算grep活动的行数
    abc=`ps -ef
    ------解决方案--------------------
    grep "...."
    ------解决方案--------------------
    grep -v grep`
    if [ $abc -ge 1 ]; then       >= 1判断进程存在  -eq 0(=0)实际上就是进程不存在
       进程存在
    fi
    ------解决方案--------------------
    为什么不写一个循环呢?
    set -A PROCS proc1 proc2 proc3 proc4 proc5 proc6
    typeset -i n=0
    for i in ${PROCS [@]}
        do
            PROCS_PID[$n]=`ps -ef
    ------解决方案--------------------
     grep ${i} 
    ------解决方案--------------------
     awk '{ print $2 }'`
            if [ PROCS_PID[$n]=` = "" ];then
                 writeLog "*** ${i} has failed. " 
                return 1
            fi
            (( n = n + 1 ))
        done