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