1. 程式人生 > 其它 >解決端口占用的情況

解決端口占用的情況

我們在啟動應用的時候經常發現我們需要使用的埠被別的程式佔用,更多的情況下,我們不只是需要找出是誰佔用了這個埠,有時還需要佔用者釋放這個埠。下面將簡單講述下在 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