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

    技术2025-09-30  41

    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即可

    Processed: 0.009, SQL: 9