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/*

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM