检测进程是否正在运行并自动重启进程的shell脚本编写

先说明下脚本的用处,此脚本可用于检测进程是否在运行,并在发现进程消失/没有运行时重启进程。

脚本内容

#!/bin/sh

while :
do
    stillRunning=$(ps -ef|grep "/home/user/frp/frpc"|grep -v "grep")
    if [ "$stillRunning" ]
    then
        sleep 10
    else
        /home/user/frpc -c /home/user/frp/frpc.ini &
    fi
    sleep 10
 done

解释

stillRunning=$(ps -ef|grep "/home/user/frp/frpc"|grep -v "grep")

上面这行用来检测要监视的进程"/home/user/frp/frpc"是否正在运行。一定要有grep -v "grep",否则可能会影响到检查结果。如果没有搜索到对应的进程名的话会返回空置,使得if条件不成立,执行else后语句;否则if条件成立,执行then后的语句。

else后面的语句就是启动进程的命令,可以替换成需要的命令。sleep 10就是让监视进程暂停10秒,然后继续运行。


版权声明:本文为Geek_of_CSDN原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。