ss — 顯示 Socket 統計資訊

顯示網路連線、監聽埠與 socket 資訊,為 netstat 的現代替代。

語法

ss [選項] [過濾器]

常用選項

選項 說明 範例
-t, --tcp 只顯示 TCP socket ss -t
-u, --udp 只顯示 UDP socket ss -u
-l, --listening 只顯示監聽中的 socket(等待連線) ss -l
-n, --numeric 不解析主機名稱,直接顯示 IP 和 port 號碼 ss -n
-p, --processes 顯示使用 socket 的程序資訊 ss -p
-a, --all 顯示所有 socket(含 listening 和 connected) ss -a
-4, -6 只顯示 IPv4/IPv6 ss -4
sport/dport 依來源/目的 port 過濾 ss -tnl sport = :80

使用範例

範例 1:查看所有監聽中的 TCP port

最常用:查看哪些服務正在監聽哪些埠號(-t=TCP -l=監聽 -n=數字格式)。

$ ss -tln
State   Recv-Q Send-Q  Local Address:Port  Peer Address:Port
LISTEN  0      128     0.0.0.0:22         0.0.0.0:*
LISTEN  0      511     0.0.0.0:80         0.0.0.0:*
LISTEN  0      128     127.0.0.1:3306     0.0.0.0:*
範例 2:查看監聽 port 和對應程序

加上 -p 顯示哪個程序在使用這個 port(需要 sudo)。

$ sudo ss -tlnp
State  Recv-Q Local Address:Port  Process
LISTEN 0      0.0.0.0:22          users:(("sshd",pid=1234,fd=3))
LISTEN 0      0.0.0.0:80          users:(("nginx",pid=5678,fd=6))
範例 3:查看建立中的 TCP 連線

顯示所有已建立(ESTABLISHED)的 TCP 連線,常用於確認連線數量。

$ ss -tn state established
Recv-Q Send-Q  Local Address:Port  Peer Address:Port
0      0       192.168.1.5:22     192.168.1.100:51234
0      0       192.168.1.5:80     203.0.113.5:45678
範例 4:統計連線狀態數量

搭配 grep 和 wc 統計各狀態的連線數,監控伺服器連線壓力。

$ ss -tn | grep ESTABLISHED | wc -l
247

延伸閱讀