天天看點

替代netstat的指令之一「ss」 使用執行個體

作者:雲中漫步

ss指令簡介

ss (socket statistics) 是一個指令行實用程式,用于調查 Linux 系統中的套接字。它顯示與netstat指令類似的資訊。它可以顯示更多的 TCP 和狀态資訊。

指令輸出結果包含以下列:

title 描述
Netid 套接字的類型。例如 u_str(Unix 流)、icmp6、tcp、udp 等。
state 套接字的狀态。ESTAB:建立連接配接;UNCONN:未連接配接的連接配接;LISTEN:監聽連接配接
Recv-Q 連接配接到此套接字的使用者程式未複制的位元組數
Send-Q 遠端主機未确認的位元組數。
Local Address:Port 本地ip位址:端口
Peer Address:Port 遠端機器ip位址:端口

使用 ss 指令的不同示例

指令格式:

$ ss [選項]
           

重要 [選項] 參數:

  • -a:顯示所有套接字
  • -l:隻顯示監聽套接字
  • -t:僅顯示 TCP 套接字
  • -u:僅顯示 UDP 套接字
  • -x:僅顯示 UNIX 域套接字
  • -m:顯示套接字記憶體使用情況
  • -s:顯示彙總統計資訊

1 用ss指令顯示所有連接配接

使用-aor--all選項,您可以檢視系統中的所有監聽和非監聽連接配接。

$ ss -a
           

2 使用 ss 指令隻顯示監聽套接字

預設情況下,監聽套接字不會顯示在輸出中。要檢視監聽套接字,可以使用-l 或者 --listening選項。

注:-a 會包含監聽套接字結果。

$ ss -l
或者
$ ss --listen
           

3. ss指令顯示所有TCP連接配接

可以使用-t或--tcp選項來過濾 TCP 連接配接的輸出。 以下指令顯示系統中的所有 TCP 連接配接。

$ ss -at
或者
$ ss -a --tcp
           

4. ss指令顯示所有UDP連接配接

類似的,可以使用-u 或者 --udp選項在輸出中僅檢視 UDP 連接配接。

$ss -au
或者
$ ss -a --udp
           

5. 顯示監聽 TCP 和 UDP 套接字

如果要檢視系統中正在監聽的 TCP 和 UDP 套接字,可以使用以下指令。

$ ss -ltu
           

6. 使用 ss 指令僅顯示 UNIX 域套接字

可以使用-x或--unix選項僅顯示系統中的 UNIX 域套接字。

$ ss -x
或者
$ ss --unix
           

7. 使用 ss 指令顯示所有 IPv4 套接字

可以使用-4或--ipv4選項來列出系統中的 IPv4 套接字。

$ss -a4
或者
$ ss -a --ipv4
           

8. 使用 ss 指令顯示所有 IPv6 套接字

可以使用-6 或者 --ipv6 選項列舉系統的IPv6套接字。

$ ss -a6
或者
$ ss -a --ipv6
           

9. ss 指令顯示主機名

-r 或者 --resolve選項顯示名稱而不是主機或端口的數字位址。

$ ss -r
或者
$ ss --resolve
           

10. 使用 ss 指令顯示詳細的套接字資訊

可以使用-e 或者 --extended選項在輸出中顯示詳細的套接字資訊。

$ss -e
或者
$ ss --extended
           

11. 使用 ss 指令顯示記憶體使用情況

使用-m 或 --memory選項,ss顯示系統中的套接字記憶體使用情況。

$ ss -m
或者
$ ss --memory
           

12. ss 指令顯示正在使用套接字的程序

-p 或者 --processes 選項顯示正在使用套接字的程序。

$ ss -p
或者
$ ss --processes
           

13.使用ss指令顯示内部TCP資訊

可以使用-i 或 --info 選項檢視内部 TCP 資訊。

$ ss -i
或者
$ ss --info
           

14. ss 指令顯示彙總統計資訊

代替顯示所有套接字,-s或--summary指令在輸出中列印套接字的摘要統計資訊。

$ ss -s
或者
$ ss --summary
           

15.用ss指令顯示定時器資訊

使用 -o 或者 --options 指令在輸出中顯示網絡計時器資訊。

$ ss -o
或者
$ ss --options
           

16 用ss指令顯示指定family類型的套接字

使用-f 或者 --family選項。可用的FAMILY:unix, inet, inet6, link, netlink

$ ss -f FAMILY
或者
$ ss --family FAMILY
           

17 ss指令關閉套接字

使用-K 或者 --kill選項将強制關閉套接字并列印關閉的套接字。此操作需要 root 權限才能終止套接字。

$ sudo ss -K
或者
$ sudo ss --kill
           

18. 在 ss 指令輸出中隐藏标題行

-H 或者 --hide 選項抑制或隐藏輸出中的标題行。

$ ss -H
或者
$ ss --hide
           

19.顯示所有已建立的ssh連接配接

可以使用以下指令顯示所有已建立的 SSH 連接配接到 Linux 伺服器

$ ss -o state established '(dport = :ssh or sport = :ssh)' 
           

20. 使用 ss 指令定義連接配接狀态

我們可以使用-o state <STATE> 列出與相應狀态比對的連接配接。支援的狀态值如下:

STATE-FILTER := {all|connected|synchronized|bucket|big|TCP-STATES}
TCP-STATES := {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|closed|close-wait|last-ack|listen|closing}
connected := {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}
synchronized := {established|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}
bucket := {syn-recv|time-wait}
big := {established|syn-sent|fin-wait-{1,2}|closed|close-wait|last-ack|listen|closing}
           

例如,列舉所有connected的連結:

ss -o state connected | less           

繼續閱讀