当前位置: 代码迷 >> AIX >> AIX sh脚本,该怎么解决
  详细解决方案

AIX sh脚本,该怎么解决

热度:8331   发布时间:2013-02-26 00:00:00.0
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
  相关解决方案