Linux下进程监控脚本的实现(实现某一进程意外结束后自动重新启动)

Linux下进程监控脚本的实现(实现某一进程意外结束后自动重新启动)

背景介绍

当我们在进行Linux下程序开发或者服务部署时,进程会遇到某一程序进程异常消失,影响正常功能的实现,因此本文介绍一种进程监控脚本的实现,实现某一进程在意外结束后可以自动重新启动,并且脚本可扩展性强,移植方便

具体实现

#soft_progress_monitor.sh
#使用说明
#need_monitor_progress[n]="XXX"
#need_execute_progress[n]="XXX"
#以上第n个需要监控的程序写入need_monitor_progress[n]中
#第n个需要监控的程序结束后执行的命令写入need_execute_progress[n]中
need_monitor_progress[0]="abcd"
need_execute_progress[0]="/usr/local/abcd"
need_monitor_progress[1]="efg"
need_execute_progress[1]="/usr/local/efg -h -c -v"


log_path="/mnt/sdcard/zlog/autostart.log"
echo "log path is $log_path"
while true
do
        curtime=$(date "+%Y-%m-%d %H:%M:%S")
        i=0
        while [[ i -lt ${#need_monitor_progress[@]} ]]
        do
            process=`ps | grep ${need_monitor_progress[i]} | grep -v "grep" | wc -l`
            if [ $process -eq 0 ]
            then
                    echo "$curtime ${need_monitor_progress[i]} died reatart..." >> $log_path;
                    echo "$curtime ${need_monitor_progress[i]} died reatart..."
                    sh -c ${need_execute_progress[i]} &
                    echo "$curtime ${need_monitor_progress[i]} restart finished" >> $log_path;
                    echo "$curtime ${need_monitor_progress[i]} restart finished"
            fi
            let i++
        done
        sleep 2
done

移植说明

need_monitor_progress[0]="XXX"
need_execute_progress[0]="XXX"

need_monitor_progress[1]="XXX"
need_execute_progress[1]="XXX"

need_monitor_progress[2]="XXX"
need_execute_progress[2]="XXX"

need_monitor_progress[3]="XXX"
need_execute_progress[3]="XXX"

按照以上格式,如果需要添加新的监控简称,只需要增加need_monitor_progress[4]="xxx"need_execute_progress[4]="xxx"即可
其中need_monitor_progress是需要监控进程的名字,需要保证ps | grep xxx执行的结果唯一,need_execute_progress是进程意外关闭后需要执行的指令,即该进程正常启动需要执行的指令

注意事项

对于ps命令,脚本中在嵌入式linux中执行,该命令经过剪裁,已经没有-e -A -l -f 等参数,实际情况根据目标机器上ps命令执行情况为准
一般有

ps
ps -A
ps -e
ps -elf

大家根据实际情况调整ps | grep ${need_monitor_progress[i]} | grep -v "grep" | wc -l该命令
一般情况ps -e | grep ${need_monitor_progress[i]} | grep -v "grep" | wc -l或者ps -elf | grep ${need_monitor_progress[i]} | grep -v "grep" | wc -l即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值