【Linux】监控项目进程挂了后自动重启

可以使用以下步骤编写一个脚本,以在Linux中自动检测并启动某个进程:

  1. 使用 ps 命令检查进程是否在运行,如果没有,则执行重启命令。可以使用以下命令来检查进程是否正在运行:
ps aux | grep <进程名称>
  1. 如果进程没有找到,则使用启动命令启动进程,例如:
<启动命令>
  1. 可以将这些命令组合成一个 shell 脚本,例如:
#!/bin/bash

while true
do
    if pgrep <进程名称> >/dev/null
    then
        sleep 10
    else
        echo "<进程名称> is not running, restarting"
        <启动命令>
        sleep <重启间隔时间>
    fi
done

该脚本将无限循环检查进程,如果检测到进程已经停止运行,则会重启进程,并在下一个重启之前等待指定的时间。需要将 "<进程名称>" 替换成实际的进程名称,"<启动命令>" 替换成启动进程的实际命令,"<重启间隔时间>" 替换为重启之间等待的时间。

将脚本保存为可执行文件,例如:restart_process.sh,然后使用以下命令来启动脚本:

./restart_process.sh &

& 符号将脚本放在后台运行,这样可以在关闭 shell 会话时保持脚本运行。

监控skwalking示例

以下是一个简单的 Bash 脚本,可以实现定时监控 SkyWalking OAP Server 进程并自动重启:

#!/bin/bash                                                                                                                                                                                               
                                                                                                                                                                                                          
while true                                                                                                                                                                                                
do  
    # 检查程序是否正在运行                                                                                                                                                                                                      
    pid=`ps -ef | grep org.apache.skywalking.oap.server.starter.OAPServer | grep -v grep | awk '{print $2}'`                                                                                              
    if kill -0 ${pid} > /dev/null 2>&1                                                                                                                                                                    
    then                                                                                                                                                                                                  
        echo "pid=${pid} is running"                                                                                                                                                                      
        sleep 60                                                                                                                                                                                          
    else
        # 执行重启命令                                                                                                                                                                                                  
        echo "org.apache.skywalking.oap.server.starter.OAPServerStartUp is not running, restarting"                                                                                                       
        sh /data/skywalking/apache-skywalking-apm-bin/bin/oapService.sh                                                                                                                                   
        sleep 30                                                                                                                                                                                          
    fi                                                                                                                                                                                                    
done

上述脚本会每隔 30 秒检查一次 oap-server 进程是否正在运行。如果未运行,则执行重启命令。在执行脚本之前,你需要先确认 oap-server 的启动命令,并修改脚本中的相应部分。

可以将该脚本保存为一个文件(例如 restart_oap.sh),并使用 nohup 命令后台运行:

nohup bash restart_oap.sh > /dev/null 2>&1 &

这样,即使你关闭终端窗口,脚本也会继续在后台运行,并定时监控重启 SkyWalking OAP Server。

参考资料

linux-监控服务进程挂掉重启服务-CSDN博客

你可能感兴趣的:(运维与服务器,java,sql,数据库)