天天看点

windows小工具,结束占用端口的进程

windows小工具,结束占用端口的进程

需求:启动tomcat的时候,有其他程序的端口占用了8080端口,导致启动失败,提示端口被占用,但是windows查询端口占用程序很麻烦。所以利用python开发了小工具。

技术:

使用了pyside6框架开发UI界面。

利用python调用cmd命令查找端口占用的程序pid。

调用cmd命令杀掉程序pid。

具体代码如下:

# -*- coding: utf-8 -*
# window杀掉占用的端口程序,例如8080端口被不知名的程序占用,导致tomcat启动报错端口被占用.使用此工具,可以直接杀死该程序,从而顺利启动tomcat或者其他需要使用8080的软件
import os
import sys

from PyQt6 import QtWidgets, QtCore

# 铺界面
class MyWidget(QtWidgets.QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle('kill进程')
        self.button = QtWidgets.QPushButton("杀死进程")

        self.label = QtWidgets.QLabel("请输入端口号:")

        self.text = QtWidgets.QLineEdit("8080")


        self.layout = QtWidgets.QVBoxLayout(self)

        self.layout.addWidget(self.label)
        self.layout.addWidget(self.text)
        self.layout.addWidget(self.button)

        self.button.clicked.connect(self.magic)



    def magic(self):
        port = self.text.text()
        if port=='':
            QtWidgets.QMessageBox.warning(self, "提示框", "端口号不能为空")
            return
        self.findPort(port=port)
        QtWidgets.QMessageBox.warning(self, "提示框", f'成功杀死占用{port}端口的进程')

    # 杀死端口占用进程的主要方法
    def findPort(self,port='8080'):
        # 在cmd中使用命令 netstat -aon|findstr 8080 可以显示出8080的进程id,然后可以使用 taskkill -pid 进程号杀掉进程
        with os.popen(f'netstat -aon|findstr "{port}"') as res:
            res = res.read().split('\n')

        # result = []
        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]})
                r = os.popen(f"taskkill -pid {temp[4]} -f")

        print(f'成功杀死占用{port}端口的进程')

if __name__ == "__main__":
    app = QtWidgets.QApplication([])

    widget = MyWidget()
    widget.resize(200, 100)
    widget.show()

    sys.exit(app.exec())
           

代码完成之后,利用pyinstaller打包成 exe文件,可以直接运行。

pyinstaller -F .\KillPortTask.py --noconsole           

不得不说,python虽然很方便,但是打包的程序太大了。因为包含了qt的组件。

windows小工具,结束占用端口的进程

足足有23M多。

等过几天用c++开发一下,应该只有几KB。

有需要的吗?留下邮箱发给你。

windows小工具,结束占用端口的进程
windows小工具,结束占用端口的进程

继续阅读