python监听端口重启服务脚本

2023-12-28 17:24:37

一、问题

之前遇到一个诡异的环境问题,有个项目,其中一个微服务经常会挂,服务器为windows系统,内存不大,设置jvm参数也没什么效果,陈年旧项,懒得多理,于是通过写个监听端口的脚本来重启服务。

二、解决

通过python运行系统命令,netstat -aon|findstr 端口号,查看端口是否占用,如果占用着,说明服务没挂,不做处理,sleep设置的时间,然后再重新运行查看端口占用命令;如果没占用,说明服务挂了,重新运行启动脚本,xxxx.bat,启动服务。
依赖包:
os(windows命令)
time(定时)

代码:

######################
# 根据端口自动重启脚本~ #
######################
import os
import time

port = input("\n>>>请输入端口: \n")
# C:/Users/syp1293/Desktop/configfile/center.bat
bat_path = input("\n>>>请输入bat文件路径: \n")
time_u = input("\n>>>请输入间隔时间: \n")
while True:
    with os.popen('netstat -aon|findstr "' + port + '"') as res:
        res = res.read().split('\n')
    result = []
    if res[0] == '':
        # 不存在端口占用,启动服务
        os.system('start ' + bat_path)
        time.sleep(120)
        continue
    else:
        for line in res:
            # print(line)
            temp = [i for i in line.split(' ') if i != '']
            if len(temp) > 4:
                #  result.append({'pid': temp[4], 'address': temp[1], 'state': temp[3]})
                print('PID:', temp[4])
    # print('sleeping...')
    time.sleep(int(time_u))

三、打包

生成exe文件,并且启动后显示为命令行。

pyinstaller -F osport.py

四、效果

输入端口号
输入要启动的bat脚本路径
然后就开始监听了,比较简单,可以自测。

文章来源:https://blog.csdn.net/qq_20741133/article/details/135236797
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。