工作中,我們經常會遇到端口占用的問題,下面介紹幾種常用查看方法。
一、使用lsof
使用-i參數查看端口占用情況
lsof -i:80
二、使用netstat
參數
-a 查看所有
- -t (tcp) 僅顯示tcp相關選項
- -u (udp)僅顯示udp相關選項
- -n 拒絕顯示別名,能顯示數字的全部轉化為數字
- -l 僅列出在Listen(監聽)的服務狀態
- -p 顯示建立相關鏈接的程序名
運行命令
netstat -atunlp
三、使用 ss
ss是Socket Statistics的縮寫。用來獲取socket統計信息,它可以顯示和netstat類似的內容。ss 的優勢在於它能夠顯示更多更詳細的有關TCP和連接狀態的信息,而且比netstat更快速更高效。
當服務器的socket連接數量變得非常大時,無論是使用netstat命令還是直接cat /proc/net/tcp,執行速度都會很慢。
ss快的秘訣在於,它利用到了TCP協議棧中tcp_diag。tcp_diag是一個用於分析統計的模塊,可以獲得Linux 內核中第一手的信息,這就確保了ss的快捷高效。
參數
ss -t -a【顯示TCP連接】
-
-t: tcp
-a: all
-l: listening 【ss -l列出所有打開的網絡連接端口】
-s: summary 【顯示 Sockets 摘要】
-p: progress
-n: numeric 【不解析服務名稱】
-r: resolve 【解析服務名稱】
-m: memory 【顯示內存情況】
查看進程使用的socket 命令:
ss -pl 或者(
ss -lp |
grep
22
)
顯示所有UDP Sockets 命令:
ss -u –a
匹配遠程地址和端口號:
ss dst 192.168.25.100:50460
匹配本地地址和端口號:
ss src 192.168.25.140
ss 和 netstat 效率對比:
netstat | time netstat –an 【效率低】 |
ss | time ss 【效率高】 |
四、使用nmap進行端口掃描
redhat、centos等發行版安裝nmap
sudo yum install nmap
ubuntu等發行版安裝nmap
sudo apt-get install nmap
掃描本機開放的所有端口
nmap 127.0.0.1