天天看點

如何在Windows,Linux下檢視JAVA端口占用情況(阿裡)

 如需要确定誰占用了9050端口 為例:
  1、Windows平台
  在windows指令行視窗下執行:
  1.檢視所有的端口占用情況        
C:\>netstat -ano
  協定    本地位址                     外部位址               狀态                   PID
  TCP    127.0.0.1:1434         0.0.0.0:0              LISTENING       3236
  TCP    127.0.0.1:5679         0.0.0.0:0              LISTENING       4168
  TCP    127.0.0.1:7438         0.0.0.0:0              LISTENING       4168
  TCP    127.0.0.1:8015         0.0.0.0:0              LISTENING       1456
  TCP    192.168.3.230:139      0.0.0.0:0              LISTENING       4
  TCP    192.168.3.230:1957     220.181.31.225:443     ESTABLISHED     3068
  TCP    192.168.3.230:2020     183.62.96.189:1522     ESTABLISHED     1456
  TCP    192.168.3.230:2927     117.79.91.18:80        ESTABLISHED     4732
  TCP    192.168.3.230:2929     117.79.91.18:80        ESTABLISHED     4732
  TCP    192.168.3.230:2930     117.79.91.18:80        ESTABLISHED     4732
  TCP    192.168.3.230:2931     117.79.91.18:80        ESTABLISHED     4732      
  2.檢視指定端口的占用情況       
 C:\>netstat -aon|findstr "9050"
  協定    本地位址                     外部位址               狀态                   PID
  TCP    127.0.0.1:9050         0.0.0.0:0              LISTENING       2016      
  P: 看到了嗎,端口被程序号為2016的程序占用,繼續執行下面指令: (也可以去任務管理器中檢視pid對應的程序)
  3.檢視PID對應的程序       
 C:\>tasklist|findstr "2016"
  映像名稱                       PID 會話名              會話#       記憶體使用
  tor.exe                     2016 Console                 0     16,064 K      
  P:很清楚吧,tor占用了端口。
  4.結束該程序       
 C:\>taskkill /f /t /im tor.exe      

Linux 檢視端口占用情況 

Linux 檢視端口占用情況可以使用 lsof 和 netstat 指令。

lsof

lsof(list open files)是一個列出目前系統打開檔案的工具。

lsof 檢視端口占用文法格式:

lsof -i:端口号      

執行個體

檢視伺服器 8000 端口的占用情況:

# lsof -i:8000
COMMAND   PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
nodejs  26993 root   10u  IPv4 37999514      0t0  TCP *:8000 (LISTEN)      

可以看到 8000 端口已經被輕 nodejs 服務占用。

lsof -i 需要 root 使用者的權限來執行,如下圖:

如何在Windows,Linux下檢視JAVA端口占用情況(阿裡)

更多 lsof 的指令如下:

lsof -i:8080:檢視8080端口占用
lsof abc.txt:顯示開啟檔案abc.txt的程序
lsof -c abc:顯示abc程序現在打開的檔案
lsof -c -p 1234:列出程序号為1234的程序所打開的檔案
lsof -g gid:顯示歸屬gid的程序情況
lsof +d /usr/local/:顯示目錄下被程序開啟的檔案
lsof +D /usr/local/:同上,但是會搜尋目錄下的目錄,時間較長
lsof -d 4:顯示使用fd為4的程序
lsof -i -U:顯示所有打開的端口和UNIX domain檔案      

netstat

netstat -tunlp 用于顯示 tcp,udp 的端口和程序等相關情況。

netstat 檢視端口占用文法格式:

netstat -tunlp | grep 端口号      
  • -t (tcp) 僅顯示tcp相關選項
  • -u (udp)僅顯示udp相關選項
  • -n 拒絕顯示别名,能顯示數字的全部轉化為數字
  • -l 僅列出在Listen(監聽)的服務狀态
  • -p 顯示建立相關連結的程式名

例如檢視 8000 端口的情況,使用以下指令:

# netstat -tunlp | grep 8000
tcp        0      0 0.0.0.0:8000            0.0.0.0:*               LISTEN      26993/nodejs         

更多指令:

netstat -ntlp   //檢視目前所有tcp端口
netstat -ntulp | grep 80   //檢視所有80端口使用情況
netstat -ntulp | grep 3306   //檢視所有3306端口使用情況      

kill

在查到端口占用的程序後,如果你要殺掉對應的程序可以使用 kill 指令:

kill -9 PID      

如上執行個體,我們看到 8000 端口對應的 PID 為 26993,使用以下指令殺死程序:

kill -9 26993      
參考:Linux 檢視端口占用情況      
參考:如何在Windows下檢視JAVA端口占用明細