首先介绍一下我现在的需求,我服务器上挂了一个用python编写的kook机器人,但有时候机器人程序会异常终止,不知道什么原因,因此需要监控机器人程序是否有在运行,如果没有就重启机器人程序。
可以写一个Shell脚本,来实现这个需求。
shell的入门教程可以看一眼这个
具体步骤如下:
- 首先新建一个helloworld.sh文件
- 给helloworld.sh执行权限:
chmod +x helloworld.sh
,linux中新建的文件默认没有执行权限 - 在helloworld.sh里写自己想实现的功能,这里我实现的功能是查询main.py进程是否在运行,每2秒就查询一次,如果不在运行就重启。
#!/bin/bashwhile true; domonitor=$(ps aux | grep main.py | grep zzy | grep -v grep | wc -l)if (( $monitor == 0 )); thenecho "$monitor DEAD, RESTARTING...... $(date)"# 添加你的重启命令/home/zzy/anaconda3/bin/python ./squad-kot/main.py &elseecho "$monitor RUNNING $(date)"fisleep 2
done
注意重启命令结尾要加一个&,表示让重启进程在后台运行,不影响当前终端,不加的话bash进程会停止输出到屏幕上,而让重启进程的输出显示在屏幕上。
- 运行helloworld.sh文件:
./helloworld.sh
显示效果:
手动kill -9机器人程序后,效果如下图所示,可以看到机器人程序因异常终止后,可以自动重启。
参考文献
shell脚本监控程序异常退出并自动重启