1. 程式人生 > 實用技巧 >linux如何檢視埠或服務被佔用情況

linux如何檢視埠或服務被佔用情況

1. lsof命令

功能:列出開啟的檔案
常用選項:
-i [i] 監聽的網路地址,如果沒有指定,預設列出所有。
[i]來自[46][protocol][@hostname|hostaddr][:service|port]
-U 列出Unix域socket檔案
-p 指定PID
-u 指定使用者名稱或UID所有開啟的檔案
+D 遞迴搜尋

例項:

列出所有開啟的檔案: # lsof 
檢視哪個程序佔用檔案: # lsof /etc/passwd 
列出所有開啟的監聽地址和unix域socket檔案: # lsof -i -U 
列出80埠監聽的程序: # lsof -i:80 
列出埠1-1024之間的所有程序:
# lsof -i:1-1024 
列出所有TCP網路連線: # lsof -i tcp 
列出所有UDP網路連線: # lsof -i udp 
根據檔案描述符列出開啟的檔案: # lsof -d 1 
列出某個目錄被開啟的檔案: # lsof +D /var/log 
列出程序ID開啟的檔案: # lsof -p 5373 
開啟所有登入使用者名稱abc或user id 1234,或PID 123或PID 456: # lsof -p 123,456 -u 123,abc 
列出COMMAND列中包含字串sshd: # lsof -c sshd

2. netstat命令

功能:列印網路連線、路由表、介面統計資訊、偽裝連線和多播成員
常用選項:
-r 顯示路由表
-i 顯示介面表
-n 不解析名字
-p 顯示程式名 PID/Program
-l 顯示監聽的socket
-a 顯示所有socket
-o 顯示計時器
-Z 顯示上下文
-t 只顯示tcp連線
-u 只顯示udp連線
-s 顯示每個協議統計資訊

例項:

顯示所有監聽: # netstat -anltu 
顯示所有TCP連線: # netstat -antp 
顯示所有UDP連線: # netstat -anup 
顯示路由表: # netstat -r

3. ss命令

功能:比netstat更強大的socket檢視工具

格式:ss [options] [ FILTER ]
常用選項:
-n 不解析名字
-a 顯示所有socket
-l 顯示所有監聽的socket
-o 顯示計時器
-e 顯示socket詳細資訊
-m 顯示socket記憶體使用
-p 顯示程序使用的socket
-i 顯示內部TCP資訊
-s 顯示socket使用匯總

-4 只顯示IPV4的socket
-0 顯示包socket
-t 只顯示TCP socket
-u 只顯示UDP socket
-d 只顯示DCCP socket
-w 只顯示RAW socket
-x 只顯示Unix域socket
-f FAMILY 只顯示socket族型別( unix, inet, inet6, link, netlink)

-A 查詢socket {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]
-D 將原始的TCP socket轉儲到檔案
-F 從檔案中讀取過濾資訊
過濾:
-o state 顯示TCP連線狀態資訊

例項:

顯示所有TCP連線: # ss -t -a 
顯示所有UDP連線: # ss -u –a 
顯示socket使用匯總: # ss -s 
顯示所有建立的連線: # ss -o state established 
顯示所有的TIME-WAIT狀態: # ss -o state TIME-WAIT 
搜尋所有本地程序連線到X Server: # ss -x src /tmp/.X11-unix/*