跳转至

1. nginx自动检测重启py脚本

1. 脚本内容

vim nginx.py
#!/usr/bin/python
import os, sys, time
while True:
    time.sleep(4)
    try:
        #ret = os.popen('ps -C nginx -o pid,cmd').readlines()
        ret = os.popen('netstat -tunlp|grep nginx').readlines()
        print(len(ret))

        if len(ret) < 2:
            print("nginx 进程异常退出, 4 秒后重新启动" )
            time.sleep(3)
            os.system("systemctl start nginx")
    except:
        print("Error",sys.exc_info()[1])
        # 最后一行这个sys.exc_info()[1]是打印错误信息吗?不太了解!!!应该可以去掉

2. 测试

python nginx.py
root@4c16g:/service/python# python nginx.py
0
nginx 进程异常退出, 4 秒后重新启动
2
2

3. 手动关闭nginx

# 另起一个窗口,关闭nginx服务
systemctl stop nginx

1. 窗口1查看

# 发现已经检测到并重新启动nginx服务!!!
2
2
2
0
nginx 进程异常退出, 4 秒后重新启动
2

4. 拓展

#1. 可以将脚本放入后台运行,取消print输出即可
nohup python nginx.py &
ps -ef|grep nginx.py

#2. 可以在检测到服务宕机后,发送邮件或者企业微信消息!
# 可以在启动服务失败后,发送邮件或者企业微信消息!

#3. 可以改写成shell脚本啊,自动检测服务状态并自启!!!许多服务都可以改写!

#4. 可以使用此模板监控其他服务,比如mysql!

1. 监控mysql服务

#!/usr/bin/env Python
import os, sys, time
while True:
    time.sleep(4)
    try:
        ret = os.popen('netstat -tunlp|grep mysqld').readlines()
        print(len(ret))

        if len(ret) < 1:
            print("mysqld 进程异常退出, 4 秒后重新启动" )
            time.sleep(3)
            os.system("systemctl start mysqld")
    except:
        print("mysqld服务启动失败!Error")

最后更新: 2022-02-18 11:07:38