日期:2014-05-16  浏览次数:20564 次

如何写守护脚本
要写个守护脚本,检查一个程序是否在运行,若没有运行就启动它

请问如何写啊,谢谢额

------解决方案--------------------
不停的去查看在不在 ps -ef | grep -v "grep" | grep yourprocess
如果不在,启动 yourprocess
------解决方案--------------------
Perl code

#! /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~~
不过也不安全。。。碎碎念。。
探讨

Perl code

#! /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/……

------解决方案--------------------
写个脚本放到crontab里比较简单, rc这些还真是没玩明白.
------解决方案--------------------
你试试这个脚本,看报什么错
Java code
#! /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