Linux查看端口占用

記錄,備忘……

 

1 使用 lsof -i:port

$ lsof -i:8082
COMMAND   PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME
java    6666  root   48u  IPv4 6541863      0t0  TCP *:irdmi (LISTEN)

可以看到8082是被java佔用的。
另,對lsof輸出列解釋:

COMMAND:進程的名稱 PID:進程標識符
USER:進程所有者
FD:文件描述符,應用程序通過文件描述符識別該文件。如cwd、txt等 TYPE:文件類型,如DIR、REG等
DEVICE:指定磁盤的名稱
SIZE:文件的大小
NODE:索引節點(文件在磁盤上的標識)
NAME:打開文件的確切名稱

FD 列中的文件描述符cwd 值表示應用程序的當前工作目錄,這是該應用程序啓動的目錄,除非它本身對這個目錄進行更改,txt 類型的文件是程序代碼,如應用程序二進制文件本身或共享庫,如上列表中顯示的 /sbin/init 程序。
其次數值表示應用程序的文件描述符,這是打開該文件時返回的一個整數。如上的最後一行文件/dev/initctl,其文件描述符爲 10。u 表示該文件被打開並處於讀取/寫入模式,而不是隻讀 ® 或只寫 (w) 模式。同時還有大寫 的W 表示該應用程序具有對整個文件的寫鎖。該文件描述符用於確保每次只能打開一個應用程序實例。初始打開每個應用程序時,都具有三個文件描述符,從 0 到 2,分別表示標準輸入、輸出和錯誤流。所以大多數應用程序所打開的文件的 FD 都是從 3 開始。
與 FD 列相比,Type 列則比較直觀。文件和目錄分別稱爲 REG 和 DIR。而CHR 和 BLK,分別表示字符和塊設備;或者 UNIX、FIFO 和 IPv4,分別表示 UNIX 域套接字、先進先出 (FIFO) 隊列和網際協議 (IP) 套接字。

 

 

2 使用 netstat -tunlp | grep port

$ netstat -tunlp | grep 8082
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp      0    0      0.0.0.0:8082            0.0.0.0:*              LISTEN      6666/java

另,對netstat參數解釋:

-t (tcp) 僅顯示tcp相關選項
-u (udp) 僅顯示udp相關選項
-n 拒絕顯示別名,能顯示數字的全部轉化爲數字
-l 僅列出在Listen(監聽)的服務狀態
-p 顯示建立相關鏈接的程序名

另,對netstat輸出解釋:

tcp :代表傳輸協議爲TCP
0.0.0.0:8082 :本地IP/Port信息
	1、0.0.0.0代表本機上可用的任意地址。 比如0.0.0.0:1234表示本機上所有地址的1234端口,這樣多ip計算機就不用重複顯示了
	2、0.0.0.0爲默認路由,即要到達不在路由表裏面的網段的包都走0.0.0.0這條規則
0.0.0.0:* :目的地址IP/Port信息
	1、此程序只作了綁定套接字操作,沒有發送數據到目的地址,也就是沒有目的地址。(此時可以是客戶端已經發起並建立了與本服務器的通訊,也可以是客戶端沒有開啓。總之是服務器沒有向外部發出數據)
	2、有目的地址,且發送了數據,但是由於是UDP傳輸,沒有用connect函數建立兩端連接。

 

 

 

 

 

 

 

 

參考:
https://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316599.html
https://www.cnblogs.com/wangtao1993/p/6144183.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章