Shell脚本监控进程异常终止并重启

首先介绍一下我现在的需求,我服务器上挂了一个用python编写的kook机器人,但有时候机器人程序会异常终止,不知道什么原因,因此需要监控机器人程序是否有在运行,如果没有就重启机器人程序。

可以写一个Shell脚本,来实现这个需求。
shell的入门教程可以看一眼这个

具体步骤如下:

  1. 首先新建一个helloworld.sh文件
  2. 给helloworld.sh执行权限:chmod +x helloworld.sh,linux中新建的文件默认没有执行权限
  3. 在helloworld.sh里写自己想实现的功能,这里我实现的功能是查询main.py进程是否在运行,每2秒就查询一次,如果不在运行就重启。
#!/bin/bash
while true
do
    monitor=$(ps aux | grep main.py | grep zzy | grep -v grep | wc -l)

    if (( $monitor == 0 ))
    then
        echo "$monitor DEAD, RESTARTING...... $(date)"
        # 添加你的重启命令
        /home/zzy/anaconda3/bin/python ./squad-kot/main.py &
    else
        echo "$monitor RUNNING $(date)"
    fi
    sleep 2
done

注意重启命令结尾要加一个&,表示让重启进程在后台运行,不影响当前终端,不加的话bash进程会停止输出到屏幕上,而让重启进程的输出显示在屏幕上。

  1. 运行helloworld.sh文件:./helloworld.sh

显示效果:
手动kill -9机器人程序后,效果如下图所示,可以看到机器人程序因异常终止后,可以自动重启。
在这里插入图片描述

one more thing:
shell脚本的存放位置要和要监控进程的文件放在同一路径下,因为进程在哪个路径下被运行起来,哪个路径就是进程的工作目录,不然有可能用相对路径读取文件时发生错误[2]。

参考文献
[1]Shell脚本监控程序异常退出并自动重启
[2]如何查看进程工作路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值