首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > 其他服务器 >

AIX sh脚本,该怎么解决

2013-01-04 
AIX sh脚本我有6个进程proc -i 1, proc-i 2,proc -i 3, proc -i 4,proc -i 5, proc-i 6我想一次性把他们拉

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

热点排行