如何在linux上使用ss命令

ss命令是經典netstat的現代替代品。您可以在Linux上使用它來獲取有關網路連線的統計資訊。下面是如何使用這個方便的工具。...

ss命令是經典netstat的現代替代品。您可以在Linux上使用它來獲取有關網路連線的統計資訊。下面是如何使用這個方便的工具。

ss命令對netstat

ss代替了不推薦使用的netstat命令,它提供了有關計算機如何與其他計算機、網路和服務通訊的詳細資訊。

ss顯示傳輸控制協議(TCP)、使用者資料報協議(UDP)、Unix(程序間)和原始套接字的統計資訊。原始套接字在網路OSI級別執行,這意味著TCP和UDP頭必須由應用程式軟體處理,而不是由傳輸層處理。Internet控制訊息協議(ICMP)訊息和ping實用程式都使用原始套接字。

使用ss

您不必安裝ss,因為它已經是最新Linux發行版的一部分。但是,它的輸出可能非常長,我們已經得到了包含630多行的結果。結果也非常廣泛。

正因為如此,我們已經包含了我們獲得的結果的文字表示,因為它們不適合螢幕截圖。我們對它們進行了修剪,使它們更易於管理。

列出網路連線

在沒有命令列選項的情況下使用ss會列出不偵聽的套接字。也就是說,它列出了不處於偵聽狀態的套接字。

要檢視此內容,請鍵入以下內容:

ss

如何在linux上使用ss命令

如何在linux上使用ss命令

Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process u_str ESTAB 0 0 * 41826 * 41827 u_str ESTAB 0 0 /run/systemd/journal/stdout 35689 * 35688 u_str ESTAB 0 0 * 35550 * 35551 ... u_str ESTAB 0 0 * 38127 * 38128 u_str ESTAB 0 0 /run/dbus/system_bus_socket 21243 * 21242 u_str ESTAB 0 0 * 19039 * 19040 u_str ESTAB 0 0 /run/systemd/journal/stdout 18887 * 18885 u_str ESTAB 0 0 /run/dbus/system_bus_socket 19273 * 17306 icmp6 UNCONN 0 0 *:ipv6-icmp *:* udp ESTAB 0 0 192.168.4.28%enp0s3:bootpc 192.168.4.1:bootps

列如下:

  • Netid:插座的型別。在我們的示例中,我們有“u\u str”,一個Unix流,“udp”和“icmp6”,一個ipversion6icmp套接字。您可以在Linux手冊頁中找到更多關於Linux套接字型別的描述。
  • 狀態:套接字所處的狀態。
  • Recv-Q:接收的資料包數。
  • Send-Q:傳送的資料包數。
  • 本地地址:港口:本地地址和埠(或Unix套接字的等效值)。
  • 同齡人地址:港口:遠端地址和埠(或Unix套接字的等效值)。

對於UDP套接字,“狀態”列通常為空。對於TCP套接字,它可以是以下之一:

  • 聽:只有伺服器端。套接字正在等待連線請求。
  • SYN-SENT:僅客戶端。此套接字已發出連線請求,正在等待是否接受。
  • SYN-RECEIVED:僅伺服器端。此套接字正在接受連線請求後等待連線確認。
  • 建立:伺服器和客戶端。伺服器和客戶機之間建立了工作連線,允許在兩者之間傳輸資料。
  • FIN-WAIT-1:伺服器和客戶端。此套接字正在等待來自遠端套接字的連線終止請求,或者等待先前從此套接字傳送的連線終止請求的確認。
  • FIN-WAIT-2:伺服器和客戶端。此套接字正在等待來自遠端套接字的連線終止請求。
  • 關閉等待:伺服器和客戶端。此套接字正在等待本地使用者的連線終止請求。
  • 關閉:伺服器和客戶端。此套接字正在等待來自遠端套接字的連線終止請求確認。
  • LAST-ACK:伺服器和客戶端。此套接字正在等待它傳送到遠端套接字的連線終止請求的確認。
  • 等待時間:伺服器和客戶端。這個套接字向遠端套接字傳送了一個確認,讓它知道它收到了遠端套接字的終止請求。它現在正在等待確認是否收到了確認。
  • 關閉:沒有連線,因此套接字已終止。

正在列出偵聽套接字

要檢視偵聽套接字,我們將新增-l(偵聽)選項,如下所示:

ss -l

如何在linux上使用ss命令

Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process nl UNCONN 0 0 rtnl:NetworkManager/535 * nl UNCONN 0 0 rtnl:evolution-addre/2987 * ... u_str LISTEN 0 4096 /run/systemd/private 13349 * 0 u_seq LISTEN 0 4096 /run/udev/control 13376 * 0 u_str LISTEN 0 4096 /tmp/.X11-unix/X0 33071 * 0 u_dgr UNCONN 0 0 /run/systemd/journal/syslog 13360 * 0 u_str LISTEN 0 4096 /run/systemd/fsck.progress 13362 * 0 u_dgr UNCONN 0 0 /run/user/1000/systemd/notify 32303 * 0

這些插座都沒有連線,正在監聽。“rtnl”是指路由netlink,用於在核心和使用者空間程序之間傳輸資訊。

列出所有套接字

要列出所有套接字,可以使用-a(all)選項:

ss -a

如何在linux上使用ss命令

Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process nl UNCONN 0 0 rtnl:NetworkManager/535 * nl UNCONN 0 0 rtnl:evolution-addre/2987 * ... u_str LISTEN 0 100 public/showq 23222 * 0 u_str LISTEN 0 100 private/error 23225 * 0 u_str LISTEN 0 100 private/retry 23228 * 0 ... udp UNCONN 0 0 0.0.0.0:631 0.0.0.0:* udp UNCONN 0 0 0.0.0.0:mdns 0.0.0.0:* ... tcp LISTEN 0 128 [::]:ssh [::]:* tcp LISTEN 0 5 [::1]:ipp [::]:* tcp LISTEN 0 100 [::1]:**tp [::]:*

無論狀態如何,輸出都包含所有套接字。

列出tcp套接字

也可以應用篩選器,以便僅顯示匹配的套接字。我們將使用-t(TCP)選項,因此只列出TCP套接字:

不鏽鋼-a-t

如何在linux上使用ss命令

列出udp套接字

-u(UDP)選項執行相同型別的過濾操作。這次,我們將只看到UDP套接字:

ss -a -u

如何在linux上使用ss命令

State Recv-Q Send-Q Local Address:Port Peer Address:Port Process UNCONN 0 0 0.0.0.0:631 0.0.0.0:* UNCONN 0 0 0.0.0.0:mdns 0.0.0.0:* UNCONN 0 0 0.0.0.0:60734 0.0.0.0:* UNCONN 0 0 127.0.0.53%lo:domain 0.0.0.0:* ESTAB 0 0 192.168.4.28%enp0s3:bootpc 192.168.4.1:bootps UNCONN 0 0 [::]:mdns [::]:* UNCONN 0 0 [::]:51193 [::]:*

列出unix套接字

要僅檢視Unix套接字,可以包括-x(Unix)選項,如下所示:

ss -a -x

如何在linux上使用ss命令

Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process u_str ESTAB 0 0 * 41826 * 41827 u_str ESTAB 0 0 * 23183 * 23184 u_str ESTAB 28 0 @/tmp/.X11-unix/X0 52640 * 52639 ... u_str ESTAB 0 0 /run/systemd/journal/stdout 18887 * 18885 u_str ESTAB 0 0 /run/dbus/system_bus_socket 19273 * 17306

列出原始套接字

原始套接字的篩選器是-w(原始)選項:

ss -a -w

如何在linux上使用ss命令

列出ip版本4套接字

可以使用-4(IPV4)選項列出使用TCP/IP版本4協議的套接字:

ss -a -4

如何在linux上使用ss命令

列出ip版本6套接字

可以使用-6(IPV6)選項啟用匹配的IP版本6篩選器,如下所示:

ss -a -6

如何在linux上使用ss命令

按狀態列出套接字

可以使用state選項按套接字所處的狀態列出套接字。這適用於已建立、偵聽或關閉狀態。我們還將使用resolve選項(-r),它嘗試將網路地址解析為名稱,將埠解析為協議。

以下命令將查詢已建立的TCP連線,ss將嘗試解析這些名稱:

ss -t -r state established

如何在linux上使用ss命令

列出了處於已建立狀態的四個連線。主機名ubuntu20-04已經解析,第二行的ssh連線顯示“ssh”而不是22。

我們可以重複此步驟以查詢處於偵聽狀態的套接字:

ss -t -r state listening

如何在linux上使用ss命令

Recv-Q Send-Q Local Address:Port Peer Address:Port Process 0 128 localhost:5939 0.0.0.0:* 0 4096 localhost%lo:domain 0.0.0.0:* 0 128 0.0.0.0:ssh 0.0.0.0:* 0 5 localhost:ipp 0.0.0.0:* 0 100 localhost:**tp 0.0.0.0:* 0 128 [::]:ssh [::]:* 0 5 ip6-localhost:ipp [::]:* 0 100 ip6-localhost:**tp [::]:*

按協議列出套接字

您可以透過dport和sport選項列出使用特定協議的套接字,這兩個選項分別表示目標埠和源埠。

我們鍵入以下內容以列出在已建立的連線上使用HTTPS協議的套接字(請注意左括號後和右括號前的空格):

ss -a state established ‘( dport = :https or sport = :https )’

如何在linux上使用ss命令

我們可以使用協議名或通常與該協議關聯的埠。Secure Shell(SSH)的預設埠是埠22。

我們將在一個命令中使用協議名稱,然後使用埠號重複它:

ss -a ‘( dport = :ssh or sport = :ssh )’ ss -a ‘( dport = :22 or sport = :22 )’

如何在linux上使用ss命令

正如所料,我們得到了相同的結果。

列出到特定ip地址的連線

使用dst(destination)選項,我們可以列出到特定目標IP地址的連線。

我們鍵入以下內容:

ss -a dst 192.168.4.25

如何在linux上使用ss命令

識別過程

要檢視哪些程序正在使用套接字,可以使用processs選項(-p),如下所示(注意必須使用sudo):

sudo ss -t -p

如何在linux上使用ss命令

State Recv-Q Send-Q Local Address:Port Peer Address:Port Process ESTAB 0 0 192.168.4.28:57650 54.218.19.119:https users:(("firefox",pid=3378,fd=151)) ESTAB 0 0 192.168.4.28:ssh 192.168.4.25:43946 users:(("sshd",pid=4086,fd=4),("sshd",pid=3985,fd=4))

這向我們展示了在TCP套接字上建立的兩個連線正被SSH守護程序和Firefox使用。

值得繼承的人

ss命令提供與netstat以前提供的資訊相同的資訊,但方式更簡單、更易訪問。您可以檢視手冊頁瞭解更多選項和提示。

  • 發表於 2021-04-14 18:48
  • 閱讀 ( 54 )
  • 分類:網際網路

你可能感興趣的文章

如何在linux上安裝和使用powershell

... 在本文中,我將向您展示如何在Linux上安裝、執行和使用PowerShell! ...

  • 發佈於 2021-03-16 02:34
  • 閲讀 ( 53 )

如何在android和termux上使用linux命令列

...許您在Android裝置上安裝誠實善良的Linux應用程式。下面是如何使用Termux應用程式。 ...

  • 發佈於 2021-03-18 07:26
  • 閲讀 ( 63 )

如何在windows10上獲得linux bash shell

... 如何在windows10上安裝linux bash shell ...

  • 發佈於 2021-03-21 11:48
  • 閲讀 ( 60 )

linux下如何重新命名檔案

要在Linux中重新命名檔案嗎?如果您知道如何在Windows、macOS或Chrome作業系統中完成這項工作,那麼您就知道如何在這裡完成這項工作。在大多數版本的Linux上,您只需右鍵單擊一個檔案並選擇Rename選項。 ...

  • 發佈於 2021-03-22 02:48
  • 閲讀 ( 67 )

linux正在吃掉你的公羊嗎?如何管理你的記憶

...記憶體。為了理解到底發生了什麼,我們必須看看Linux是如何管理記憶體的。 ...

  • 發佈於 2021-03-23 08:31
  • 閲讀 ( 58 )

如何在linux上使用groupadd管理使用者組

... 相關:如何在Linux中更改密碼 ...

  • 發佈於 2021-03-26 17:15
  • 閲讀 ( 44 )

如何在linux中新增使用者

想在Linux系統上新增使用者但不知道如何新增?在Linux上使用命令列介面管理使用者無疑是一項複雜的工作。而對於初學者來說,即使新增新使用者也是一場噩夢。 ...

  • 發佈於 2021-03-26 23:29
  • 閲讀 ( 69 )

初學者的nmap:獲得埠掃描的實踐經驗

... 如何使用nmap掃描網路 ...

  • 發佈於 2021-03-28 11:48
  • 閲讀 ( 44 )

如何檢查linux核心和作業系統版本

...版本可以讓您對安全更新做出重要決定。我們將向您展示如何找到這些,無論您使用哪個發行版。 滾動和點釋放 你知道你在執行哪個版本的Linux嗎?你能找到核心版本嗎?Linux的滾動發行版,如Arch、Manjaro和openSUSE,經常使用自...

  • 發佈於 2021-04-01 13:11
  • 閲讀 ( 51 )

如何在linux上的bash中設定環境變數

Linux上有多種型別的環境變數。瞭解如何檢視它們,為本地和遠端登入建立它們,並使它們在重新啟動後仍然有效。 環境變數的工作原理 啟動終端視窗及其內部的shell時,會引用一組變數,以確保shell配置正確。這些變數還確...

  • 發佈於 2021-04-02 06:44
  • 閲讀 ( 59 )
e6491756
e6491756

0 篇文章

作家榜

  1. admin 0 文章
  2. 孫小欽 0 文章
  3. JVhby0 0 文章
  4. fvpvzrr 0 文章
  5. 0sus8kksc 0 文章
  6. zsfn1903 0 文章
  7. w91395898 0 文章
  8. SuperQueen123 0 文章

相關推薦