日期:2014-05-16 浏览次数:20774 次
#! /bin/ash
PRO_PATH="程序的路径"
PROGRAM="程序名"
while true ; do
PRO_NOW=`ps aux | grep $PROGRAM | grep -v grep | wc -l`
if [$PRO_NOW -lt 1]; then
$PRO_PATH/$PROGRAM 2>/dev/null 1>&2 &
fi
PRO_STAT=`ps aux|grep $PROGRAM |grep T|grep -v grep|wc -l`
# 如果指定进程状态为已停止的信息大于零的话
if [ $PRO_STAT -gt 0 ] ; then
killall -9 $PROGRAM
sleep 2
$PRO_PATH/$PROGRAM 2>/dev/null 1>&2 &
fi
# while、until与for循环皆以do开始以done结束构成循环体
done
# exit 用来结束脚本并返回状态值,0 - 为成功,非零值为错误码,取值范围为0 ~ 255。
exit 0
------解决方案--------------------
killall -9 杀不掉僵尸进程咩~~
ps -ef 替换 ps aux 不错的
如果是僵尸进程,杀死父进程id~~
不过也不安全。。。碎碎念。。
#! /bin/bash
while true ; do
PRO_NOW=`ps aux | grep myTest | grep -v grep | wc -l`
if [ $PRO_NOW -lt 1 ]; then
/mytools/myTest &
fi
done