python脚本监控Windows上的多个端口的程序是否正常执行,在异常时杀死进程并进行程序的重启
时间: 2024-03-13 18:42:51 浏览: 155
好的,这是一个稍微复杂一点的需求,你需要使用 Python 的 socket 模块来检测端口是否正常监听,使用 subprocess 模块来启动和杀死进程。以下是一个简单的实现:
```python
import socket
import subprocess
import time
# 要监控的端口列表
port_list = [8000, 8080, 9000]
# 要监控的程序的文件名和启动命令
program_file = "your_program.py"
program_command = f"python {program_file}"
# 启动程序的函数
def start_program():
return subprocess.Popen(program_command)
# 杀死程序的函数
def kill_program(process):
process.kill()
# 检查端口是否正常监听的函数
def is_port_open(port):
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
return s.connect_ex(('localhost', port)) == 0
# 监控程序的主循环
while True:
# 启动程序
program = start_program()
# 检查程序是否正常执行
while program.poll() is None:
# 检查端口是否正常监听
for port in port_list:
if not is_port_open(port):
# 端口未正常监听,杀死程序并重启
print(f"端口 {port} 未正常监听,杀死进程并重启...")
kill_program(program)
time.sleep(5)
program = start_program()
break
# 等待一段时间后重新检查
time.sleep(10)
# 程序异常退出,重启程序
print("程序异常退出,5秒钟后重启...")
time.sleep(5)
```
你可以将上面的代码保存为一个名为 `monitor.py` 的脚本,并将 `your_program.py` 替换为你要监控的程序的文件名。然后在终端中运行 `python monitor.py` 即可启动监控程序。当你的程序异常退出或任意一个监控的端口未正常监听时,监控程序会自动杀死进程并重启程序。
阅读全文