日期:2014-05-16 浏览次数:20646 次
#! /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