在之前的文章中,我提到過 ss
,它是 iproute2 包附帶的另一個工具,允許你查詢 socket 的有關統計資訊。可以完成 netstat
同樣的任務,但是,ss
稍微快一點而且命令更簡短。
直接輸入 ss
,預設會顯示與 netstat
同樣的內容,並且輸入類似的引數可以獲取你想要的類似輸出。例如:
$ ss -t
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 127.0.0.1:postgresql 127.0.0.1:48154
ESTAB 0 0 192.168.0.136:35296 192.168.0.120:8009
ESTAB 0 0 192.168.0.136:47574 173.194.74.189:https
[…]
ss -t
只顯示 TCP 連線。ss -u
用於顯示 UDP 連線,-l
引數只會顯示監聽的埠,而且可以進一步過濾到任何想要的資訊。
我並沒有測試所有可用引數,但是你甚至可以使用 -K
強制關閉 socket。
ss
真正耀眼的地方是其內建的過濾能力。讓我們列出所有埠為 22(ssh)的連線:
$ ss state all sport = :ssh
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp LISTEN 0 128 *:ssh *:*
tcp ESTAB 0 0 192.168.0.136:ssh 192.168.0.102:46540
tcp LISTEN 0 128 :::ssh :::*
如果只想看已建立的 socket(排除了 listening 和 closed ):
$ ss state connected sport = :ssh
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp ESTAB 0 0 192.168.0.136:ssh 192.168.0.102:46540
類似的,可以列出指定的 host 或者 ip 段。例如,列出到達 74.125.0.0/16 子網的連線,這個子網屬於 Google:
$ ss state all dst 74.125.0.0/16
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp ESTAB 0 0 192.168.0.136:33616 74.125.142.189:https
tcp ESTAB 0 0 192.168.0.136:42034 74.125.70.189:https
tcp ESTAB 0 0 192.168.0.136:57408 74.125.202.189:https
ss
與 iptables 的語法非常相同,如果已經熟悉了其語法,ss
非常容易上手。也可以安裝 iproute2-doc 包, 透過 /usr/share/doc/iproute2-doc/ss.html
獲得完整文件。
還不快試試! 你就可以知道它有多棒。無論如何,讓我輸入的字元越少我越高興。
via: https://insights.ubuntu.com/2017/07/25/ss-another-way-to-get-socket-statistics/
作者:Mathieu Trudel-Lapierre 譯者:VicYu 校對:wxy
本文由 LCTT 原創編譯,Linux中國 榮譽推出