解決端口占用的情況
阿新 • • 發佈:2021-07-14
我們在啟動應用的時候經常發現我們需要使用的埠被別的程式佔用,更多的情況下,我們不只是需要找出是誰佔用了這個埠,有時還需要佔用者釋放這個埠。下面將簡單講述下在 windows 和 linux 系統中如何去結束這個佔用者的程序。
Windows
在 Windows 系統中我們可以使用 CMD 命令來實現這個功能。主要設計的命令包括 netstat
findstr
taskkill
通過幫助命令能夠很好的獲取到這三個命令的使用方式,或者點選文中的連線檢視百度百科對其的解釋和使用例子。
比如我們想停用 Tomcat 所佔用的 8080 埠
netstat -ano | findstr ":8080"
輸入上面的命令可以看見下面的輸出
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 15496
TCP [::]:8080 [::]:0 LISTENING 15496
從左到又每一列的意義為 協議、本地地址、外部地址、狀態、PID
我們記下最後的值再使用 taskkill
命令來結束指定程序號的程序。
taskkill /f /t /pid 15496
然後你會看到如下的輸出
成功: 已終止 PID 20816 (屬於 PID 15496 子程序)的程序。 成功: 已終止 PID 15496 (屬於 PID 17132 子程序)的程序。
到此埠就已釋放,再通過 netstat
你將找不到 8080 埠的資訊。
Linux
在 linux 環境下能夠幫助找到程序號的命令。
- 程序檢視器-ps
Linux 中的 ps 命令是 Process Status 的縮寫。 ps 命令用來列出系統中當前執行的那些程序。 ps 命令列出的是當前那些程序的快照,就是執行ps命令的那個時刻的那些程序。
ps -ef | grep tomcat
- 網路服務和埠查詢-netstat
netstat 命令用於顯示各種網路相關資訊,如網路連線,路由表,介面狀態 (Interface Statistics),masquerade 連線,多播成員 (Multicast Memberships) 等等。
netstat -antp | grep 8080
- 一切皆檔案 lsof
lsof(list open files)是一個檢視當前系統檔案的工具。在linux環境下,任何事物都以檔案的形式存在,通過檔案不僅僅可以訪問常規資料,還可以訪問網路連線和硬體。如傳輸控制協議 (TCP) 和使用者資料報協議 (UDP) 套接字等,系統在後臺都為該應用程式分配了一個檔案描述符,該檔案描述符提供了大量關於這個應用程式本身的資訊。
lsof -i :8080