Linux 中的 SS 命令和有用的例子

ss 工具是一個 CLI 命令,用於在 Linux 中顯示有關網絡套接字的信息。 ss 代表套接字統計信息。 它是一個類似於netstat的工具,可以顯示更多的TCP、狀態信息等信息。

ss 工具隨 iproute2 包一起提供。 它可以顯示 PACKET、TCP、UDP、DCCP、RAW 和 Unix 域套接字的統計信息。

在本教程中,我們學習 ss 命令 在 Linux 中提供有用的示例。

1. 列出網絡連接

不帶任何選項的 ss 命令列出所有已建立連接的打開的非偵聽套接字(例如 TCP/UNIX/UDP)。

$ ss

  1. Netid:它顯示套接字的類型。
  2. 狀態:如果套接字已建立 (ESTAB)、未連接 (UNCONN) 或偵聽 (LISTEN),則它會顯示套接字的狀態。
  3. Recv-Q:顯示隊列中接收到的數據包數量。
  4. Send-Q:顯示隊列中發送的數據包數量。
  5. 本地地址:端口:顯示本地機器的地址和端口。
  6. Peer address:port :顯示遠程機器的地址和端口。

您可以通過將 ss 命令與選項結合使用來獲取更詳細的信息。 您也可以同時選擇多個選項。

ss 命令語法:

$ ss [Option]

$ ss [Option1] [Option2] [Option3]

2. 列出監聽套接字

使用顯示偵聽套接字列表 -l 或者 --listen 選項。

$ ss -l

監聽套接字

3. 列出所有套接字

您可以使用以下命令列出所有偵聽和非偵聽網絡連接 -a 或者 -all 選項。

$ ss -a

列出所有套接字

4. 列出 TCP 連接

要顯示 TCP 套接字連接,請使用 -t 或者 --tcp 選項。

$ ss -t

顯示 TCP 連接

顯示列表 所有 TCP 連接,您可以使用 -a -t 選項。 這包括套接字的所有狀態。

$ ss -at

要顯示所有偵聽狀態的 TCP 連接,請結合 -l-t 選項。

$ ss -alt

5. 升UDP 連接

要顯示 UDP 套接字連接,請使用 -u 或者 --udp 選項。

$ ss -u

顯示UDP連接

要顯示 所有 UDP 連接的列表, 利用 -a-u 選項。 這包括套接字的所有狀態。

$ ss -au

你可以結合 -l-u 顯示 UDP 連接 所有收聽狀態.

$ ss -lu

6. 列出 Unix 套接字

要顯示所有 Unix 套接字,您可以使用 ss 命令以及 -f unix 或者 -x.

$ ss -f unix

列出 Unix 套接字

7. 列出原始套接字

要顯示所有原始套接字,您可以使用 -w 或 –raw 選項。

$ ss -w

列出原始套接字

8. 列出IP地址的連接

我們可以使用 ss 命令來顯示特定目標或源 IP 地址的列表連接。

為了 example 列出目標 IP 地址的連接:

$ ss dst 13.227.138.30

列出ip地址的連接

為了 example 列出源 IP 地址的連接:

$ ss src 192.168.18.151

9. 列出 IPv4 和 IPv6 套接字連接

如果要顯示 IPv4 套接字連接列表,請使用 -4 選項和 -6 以顯示 IPv6 套接字連接列表。

顯示 IPv4 套接字連接列表:

$ ss -4

列出 IPv4 套接字

要顯示 IPv6 套接字連接列表:

$ ss -6

列出 IPv6 套接字

要列出所有 IPv4 TCP 連接,您可以使用以下命令 example.

$ ss -at4

10. 識別流程

你可以找到 套接字進程 使用 -p 選項以及 ss 命令。 要識別該過程,您需要 sudo 允許。

$ sudo ss -t -p

列出進程

11.列出沒有主機名解析的連接

要解析數字地址/端口,請使用 -r(解析)選項。 而——n 選項不會嘗試解析服務名稱。

這裡在 example,可以看出兩者的區別:

$ ss -tn
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
ESTAB 0 0 74.208.235.196:22 48.192.234.17:60216
$ ss -tr
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
ESTAB 0 64 li82-186.members.linode.com:ssh n47-172-231-17.sun4.vic.optusnet.com.au:60317
$

12. 按連接過濾

讓我們來看看如何應用過濾器來輸出特定信息的幾個例子。

要使用狀態偵聽過濾 TCP 連接,請鍵入:

$ ss -t state listening

顯示已建立的 ssh 端口連接:

$ ss -tr state established '( dport = :22 or sport = :22 )'

您也可以通過傳統的 grep 命令方式進行過濾。 在這裡,我顯示了處於監聽狀態的所有 TCP 連接:

$ ss -at | grep LISTEN

ss 命令選項

ss 命令提供了各種選項來控制根據您的要求顯示的輸出。 您可以將 -h 或 –help 與 ss 命令一起使用來查看 ss 命令實用程序可用的基本選項。

$ ss -h

ss 命令選項

ss vs netstat 命令

ss 工具包含在 iproute2 包下,並且在大多數 Linux 發行版中都是默認設置。 要使用 netstat,您需要安裝 net-tools,該工具已被棄用。 ss 命令要快得多,因為它直接從內核中獲取。 ss並不是netstat的完全替代,netstat的一些命令是被ip命令替代的。

結論

在本教程中,我們通過一些有用的示例了解了 ss 命令。 你可以參考 ss 命令手冊頁 想要查詢更多的信息。