shell:监控进程运行状态并自动重启进程

 

#!/bin/sh

MAXRSTCOUNT=5;
PROCTOGO=/mnt/hgfs/code/test/show

#count is the counter of test started times
count=0

sys_reboot()
{
    echo "system is going to reboot";
    reboot;
}

main_loop()
{
    while :
    do
    #########################################
    ProStillRunning=$(ps -aux |grep "${PROCTOGO}" |grep -v "grep")
    if [ -z "$ProStillRunning" ]; then
        #start test
        chmod +x ${PROCTOGO}
        ${PROCTOGO}
    fi

    #the running times counter
    let count=count+1
    echo "test running times is $count"

    #wait for test stoping...
    sleep 3

    #########################################
    done
}

main_loop;

 

 

实例:

cat etc/init.d/monitor-app.sh

#!/bin/bash
sleep 40

while [ 1 ]
do
        for procname in app
        do
                pgrep $procname > /dev/null
                if [ 0 -ne $? ]
                then
                        /etc/init.d/autoapp start &   ##autoapp可以是脚本,app等
                fi
        done
        sleep 30
done

 

一个app启动脚本:

cat etc/init.d/automhclient

#! /bin/sh
PATH=/sbin:/usr/sbin:/bin:/usr/bin

case "$1" in
    start)
        echo -n "Starting automhclient: "
                export DISPLAY=:0
                cd /usr/share/qt5/app/mhclient
                ./automhclient &
                echo
                exit 0
        ;;
    stop)
        echo -n "Shutting down automhclient: "
        killproc automhclient
        echo
        ;;
    restart)
        echo -n "Restarting automhclient: "
        $0 stop
        $0 start
        echo
        ;;
    *)
        echo "Usage: $0 start|stop" >&2
        exit 3
        ;;
esac

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值