天天看點

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小工具,結束占用端口的程式

繼續閱讀