Python杀死占用端口的进程(windows系统)

前言

因平时使用一些socket服务时,总是发现我要用的端口总是被占用,导致一些服务无法启动,而每次启动前人工去检索在杀死进程就很麻烦,于是就干脆封装一个函数直接整合进项目中彻底解放我的双手。

注意事项

该方式只支持在windows平台上使用,其他平台暂未测试,不清楚是否兼容

首先需要导入相关的模块

import os
import signal

安装对应模块的方式

# pip快速安装
pip install signal

首先找到占用端口的进程pid

import os

result = os.popen('netstat -aon|findstr "9001"')
print(result )

展示结果:
展示结果
返回的结果是一个文件对象,这个时候就需要读取它
有两种方式

# 方式1 该方式简单粗暴
print(result.read())

# 方式2 该方式更加优雅
with os.popen('netstat -aon|findstr "9001"') as fp:
    result = fp.read()
    print(result )

得到的结果如下图,为字符串:
执行结果
既然得到了结果,就可以着手解析,获取所需数据

import os

with os.popen('netstat -aon|findstr "9001"') as res:
    res = res.read().split('\n')
result = []
for line in res:
    temp = [i for i in line.split(' ') if i != '']
    if len(temp) > 4:
        print({'pid': temp[4], 'address': temp[1], 'state': temp[3]})

解析后的结果为:
解析结果
现在很方便操作了,因为我只需要部分数据,所以并没有取全部。
得到了进程pid,接下来是杀死进程。

直接调用OS的杀死进程命令:os.kill(进程pid, signal.SIGINT)
于是我们来改装下代码:

import os
import signal

# 判断端口是否被占用,占用直接把占用端口的进程给杀掉
with os.popen('netstat -aon|findstr "9001"') as res:
	res = res.read().split('\n')
	result = []
	for line in res:
		temp = [i for i in line.split(' ') if i != '']
		if len(temp) > 4:
			result.append(temp[4])
for i in result:
	os.kill(int(i), signal.SIGINT)
	print(f"杀死占用端口的进程成功,该进程pid:{i}")

执行结果为:
执行结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

梦落影逝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值