AIX sh脚本

greenweather 2012-07-04 08:19:57
我有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
我写的这种不成功,不是太熟这个,不知道怎么写,请教大家
...全文
368 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangshiruyan1989 2012-08-06
  • 打赏
  • 举报
回复
楼主怎么不结贴。。
wangshiruyan1989 2012-07-27
  • 打赏
  • 举报
回复
为什么不写一个循环呢?
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
wqkjj 2012-07-12
  • 打赏
  • 举报
回复
#!/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
greenweather 2012-07-05
  • 打赏
  • 举报
回复
这个值在AIX上用,AIX上的如何写呢?
morris88 2012-07-04
  • 打赏
  • 举报
回复
shell 跨平台比较痛苦,楼主没考虑用 perl/python/ruby 实现

1,194

社区成员

发帖
与我相关
我的任务
社区描述
该论坛主要探讨IBM AIX平台的安装、部署、应用开发等话题,并为网友们提供自由交流的平台。
社区管理员
  • IBM AIX社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧