1. 程式人生 > >良許 | 網路檢測神器 ss 命令,你可能根本就不會用!

良許 | 網路檢測神器 ss 命令,你可能根本就不會用!

今天我們來介紹一下 Linux ss 命令。

ss 是 Socket Statistics 的縮寫,用來統計 socket 連線的相關資訊,它跟 netstat 差不多,但有著比 netstat 更強大的統計功能,能夠顯示更多更詳細的連線資訊。

剛開始接觸 ss 命令可能會比較困難,我們可通過 ss -h 或者 ss -help 來詳細學習 ss 的選項功能。當然,最好的辦法是直接嘗試一些常用的命令來學習 ss 。

下面我們來了解一下 ss 的一些實用用法。

ss -s 是一個非常有用的命令。它可以按網路傳輸型別顯示總體統計資訊,我們不妨來測試一下:

$ ss -s
Total: 524
TCP:   8 (estab 1, closed 0, orphaned 0, timewait 0)

Transport Total     IP        IPv6
RAW       2         1         1
UDP       7         5         2
TCP       8         6         2
INET      17        12        5
FRAG      0         0         0
  • RAW Socket 原始套接字。允許直接傳送和接收 IP 資料包,無需滿足特定的傳輸協議,用於 namp 等安全應用。
  • TCP 傳輸控制協議。是我們網路連線當中的主要連線協議。
  • UDP 使用者資料報協議。類似於 TCP 但沒有錯誤檢查。
  • INET 包含上述項。( INET4 和 INET6 可以通過一些 ss 命令單獨檢視)。
  • FRAG 可以理解為碎片的意思。

顯然,上面的輸出結果並沒有直接顯示詳細的 socket 連線情況,我們可以看到最上面的 Total 行顯示的 socket 總數是非常多的,不過,這種分類統計的方式在某些情況下很有用。

如果想要檢視具體的 socket 活動資訊,我們可以使用 ss -a

命令,但是我們要做好心理準備檢視一大堆的資訊,我們可以先用 wc -l 來統計一下行數試探一波:

$ ss -a | wc -l
555

有木有被嚇到?555 行資料!

不過不必驚慌,我們可以檢視指定類別的 socket 活動。

  • ss -ta 轉儲所有 TCP socket
  • ss -ua 轉儲所有 UDP socket
  • ss -wa 轉儲所有 RAW socket
  • ss -xa 轉儲所有 UNIX socket
  • ss -4a 轉儲所有 IPV4 socket
  • ss -6a 轉儲所有 IPV6 socket

不帶引數的 ss 命令會顯示所有已經建立的 socket 連線。為了方便閱讀,這裡只顯示一頁的資訊,省略其他大部分資訊:

$ ss | more
Netid  State Recv-Q Send-Q           Local Address:Port    Peer Address:Port
u_str  ESTAB 0      0                            * 20863              * 20864
u_str  ESTAB 0      0                            * 32232              * 33018
u_str  ESTAB 0      0                            * 33147              * 3257544ddddy
u_str  ESTAB 0      0            /run/user/121/bus 32796              * 32795
u_str  ESTAB 0      0            /run/user/121/bus 32574              * 32573
u_str  ESTAB 0      0                            * 32782              * 32783
u_str  ESTAB 0      0  /run/systemd/journal/stdout 19091              * 18113
u_str  ESTAB 0      0                            * 769568             * 768429
u_str  ESTAB 0      0                            * 32560              * 32561
u_str  ESTAB 0      0          @/tmp/dbus-8xbBdjNe 33155              * 33154
u_str  ESTAB 0      0  /run/systemd/journal/stdout 32783              * 32782
…
tcp    ESTAB 0     64                 192.168.0.16:ssh      192.168.0.6:25944
tcp    ESTAB 0      0                 192.168.0.16:ssh      192.168.0.6:5385

要檢視剛建立的 TCP 連線,使用 ss -t

$ ss -t
State    Recv-Q   Send-Q      Local Address:Port            Peer Address:Port
ESTAB    0        64           192.168.0.16:ssh              192.168.0.6:25944
ESTAB    0        0            192.168.0.16:ssh              192.168.0.9:5385

要僅顯示監聽 socket ,嘗試 ss -lt

$ ss -lt
State   Recv-Q   Send-Q      Local Address:Port             Peer Address:Port
LISTEN  0        10              127.0.0.1:submission            0.0.0.0:*
LISTEN  0        128         127.0.0.53%lo:domain                0.0.0.0:*
LISTEN  0        128               0.0.0.0:ssh                   0.0.0.0:*
LISTEN  0        5               127.0.0.1:ipp                   0.0.0.0:*
LISTEN  0        10              127.0.0.1:smtp                  0.0.0.0:*
LISTEN  0        128                  [::]:ssh                      [::]:*
LISTEN  0        5                   [::1]:ipp                      [::]:*

若你想要顯示埠號而不是服務名,則 ss -ltn

$ ss -ltn
State    Recv-Q    Send-Q        Local Address:Port        Peer Address:Port
LISTEN   0         10                127.0.0.1:587              0.0.0.0:*
LISTEN   0         128           127.0.0.53%lo:53               0.0.0.0:*
LISTEN   0         128                 0.0.0.0:22               0.0.0.0:*
LISTEN   0         5                 127.0.0.1:631              0.0.0.0:*
LISTEN   0         10                127.0.0.1:25               0.0.0.0:*
LISTEN   0         128                    [::]:22                  [::]:*
LISTEN   0         5                     [::1]:631                 [::]:*

這裡就先介紹這麼多,其他的詳細內容請參考幫助手冊( ss -h)。

另外,這裡提供一些小技巧,你可以將那些最有用的選項轉換為別名,能讓你更容易使用。例如:

$ alias listen="ss -lt"
$ alias socksum="ss -s"

-----------------

我是良許,世界500強外企 Linux 開發工程師,專業生產 Linux 乾貨。歡迎關注我的公眾號「良許Linux」,回覆「1024」獲取最新最全的技術資料,回覆「入群」進入高手如雲技術交流群。

相關推薦

| 網路檢測神器 ss 命令可能根本

今天我們來介紹一下 Linux ss 命令。 ss 是 Socket Statistics 的縮寫,用來統計 socket 連線的相關資訊,它跟 netstat 差不多,但有著比 netstat 更強大的統計功能,能夠顯示更多更詳細的連線資訊。 剛開始接觸 ss 命令可能會比較困難,我們可通過 ss -h 或

| 命令的輸出儲存?居然連 tee 命令

很多情況下,我們需要儲存程式/命令的輸出到本地,常用的一種方法是重定向,這也是一種很好的方法。但有個問題,如果你想要做後續操作,比如要統計輸出的行數等,重定向就有困難了。 這時候,tee 命令就派上用場啦~ tee 語法格式: $ tee [OPTIONS] [FILE] 這個命令有 4 個主要選項,配合這

c++ try catch 問題(沒有throw被刪除加上/EHa這樣被刪除)

pla 還要 得出 我們 狀態 其它 編譯錯誤 isa member 以前都是用try{} catch(…){}來捕獲C++中一些意想不到的異常, 今天看了Winhack的帖子才知道,這種方法在VC中其實是靠不住的。例如下面的代碼: 以前都是用try{} c

關於Linux的27件小事可能一個都知道

許多人認為10月5日是 Linux系統的週年紀念日,因為這是 Linux 在1991年首次對外公佈的時間。不過,你可能不知道的是,早在1991年8月25日,當年還是大學生的 Linus Torvalds 就向 comp.os.minix 新聞組的人透露了由於“業餘愛好”他正在

小心離被“AI”遠了

座標上海,2018世界人工智慧大會,承包了今天AI界的頭條。 國務院副總理出席、BAT掌門人同臺、全球AI巨頭參與,儼然人工智慧界的高光時刻上演。 而論壇之外, 過去5年間,超過4萬億,年複合增長率超過67%的投資正在被源源不斷地注入到分佈在22個省份的43個城市的超過900家人工智慧企業中

努力到把自己都感動的時候離成功遠了。

本文將介紹在VS2013中安裝Pyrhon。 1.首先安裝Python Toolsfor Visual Studio 網址:http://pytools.codeplex.com/releases/

return——執行了return語句後面的語句將執行

如果執行了return語句,那麼後面的語句將會不執行。當前函式只要執行了return,之後的程式碼是不可能執行的 如果沒到return,比如return 在 if裡面,而if沒滿足條件,那有可能執行後面的語句 def f(x): if x>5:

解開一個疑惑為什麽LVS開放的端口使用netstat或ss命令能查找到其監聽的端口呢?

規則 用戶 sage www spa style 9.png 訪問 分享 RT, 這個疑問,本周一直在心裏,今天找到一個說法。 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 另外LVS規則算是內核方法,用netstat -ntul

java工程師linux命令這篇文章夠了

sep 實戰 reads href 改變 sig 腳本 喜歡 這樣的 精彩內容推薦 一套java架構師學習資源,等你拿 你所需要的大數據視頻教程 微服務資源springboot、springcloud、docker、dubbo項目實戰等傾心分享 shell簡介

Linux中find命令用法全匯總看完沒有

分用 想要 單個 ges 基本上 特定 cda size 以及 Linux 查找命令是Linux系統中最重要和最常用的命令之一。查找用於根據與參數匹配的文件指定的條件來搜索和查找文件和目錄列表的命令。查找可以在各種條件下使用,您可以通過權限,用戶,組,文件類型,日期,大小等

CodePlus 第五次網路賽 我有矩陣有嗎?(思維題)

題目描述 企鵝豆豆手裡有兩個 01 矩陣 A 和 B 。他可以進行兩種操作: 選擇 A 矩陣的一行,然後把這一行的 0 變成 1 ,把 1 變成 0 。 選擇 A 矩陣的一列,然後把這一列的 0 變成 1 ,把 1 變成 0 。 現在他想知道能不能把 A 矩陣通過以上

CodePlus 第五次網路賽 我有矩陣有嗎?

題目描述 企鵝豆豆手裡有兩個 01 矩陣 A 和 B 。他可以進行兩種操作: 選擇 A 矩陣的一行,然後把這一行的 0 變成 1 ,把 1 變成 0 。 選擇 A 矩陣的一列,然後把這一列的 0 變成 1 ,把 1 變成 0 。 現在他想知道能不能把 A 矩陣通過以上操作變成 B 矩陣。保證 A

2018年最新Java環境變數配置:完美解決java,javac是內部或外部命令cmd只識別java識別javacjdk,jre,tomcat,JAVA_HOME,JRE_HOME配置

用cmd執行java可以,卻不能執行javac原因: JDK9(或者是JDK1.9)版本之後,JDK和JRE的安裝路徑不再是包含關係了,而網上的環境變數的路徑還是JDK老版本(JDK8及以下版本)的配置方法,所以你按照JDK老版本路徑配置肯定不能在命令列下java 和 ja

cd命令真的了麼?

cd命令,你真的會用了麼? 0. 前言 linux 系統中,經常使用 cd 命令,但是你真的會用了麼? 1. 簡介 cd 命令用於在各個路徑中穿梭。 2. 實戰 2.1 來回切換檔案路徑 經常出現的場景是:進入到/usr/local/hadoop-2.6.4資

Linux系統的幾個有趣命令玩過嗎?

1. yes命令,預設會輸出很多個y,可以用來對付選擇很多y/n的應用,同時也支援在yes增加一個引數,這樣也可反覆列印yes後面跟隨的引數,直到CTRL+C殺掉yes程序。 man: yes – output a string repeatedly until killed 2. ddate命令

共享印表機時出現"無法訪問可能沒有許可權使用網路資源“

現象: 在一臺電腦上面共享印表機之後,在另一臺電腦上面新增網路印表機時,有可能會遇到"無法訪問,你可能沒有許可權使用網路資源“的問題。 解決方法: 請首先檢查計算機所在的域/工作組是否相同,再檢查域/工作組中的"計算機名"是否唯一!!! Windows 8.1 中文版

C#元件系列——又一款Excel處理神器Spire.XLS值得擁有(二)

前言:上篇 C#元件系列——又一款Excel處理神器Spire.XLS,你值得擁有 介紹了下元件的兩個功能,說不上特色,但確實能解決我們專案中的一些實際問題,這兩天繼續研究了下這個元件,覺得有些功能用起來還是挺方便的,這篇繼續來看看Spire.XLS的一些其他功能,說不定有你需要的呢~~ 一、基礎入門

C#元件系列——又一款Excel處理神器Spire.XLS值得擁有

前言:最近專案裡面有一些對Excel操作的需求,博主想都沒想,NPOI唄,簡單、開源、免費,大家都喜歡!確實,對於一些簡單的Excel匯入、匯出、合併單元格等,它都沒啥太大的問題,但是這次的需求有兩點是NPOI搞不定的: 匯入Excel後,需要切割Excel的Sheet頁,然後每個Sheet頁單獨生成一

關於samba無法訪問可能沒有許可權使用網路的解決辦法

這個問題剛剛解決了,真是太爽了,現在總結一下: 執行環境:主機WINXP 虛擬機器:Fedora 9 之前一直沒有看到共享圖示,原因歸結沒設定好。 1,在虛擬機器下,設定samba伺服器以及使用者,新增目錄 2,虛擬機器網絡卡要和主機網絡卡在同一閘道器下 3,修改/etc/

解決“**無法訪問可能沒有許可權使用網路資源請與管理員聯絡拒絕訪問"

電腦出現“XXX無法訪問。你可能沒有許可權使用網路資源......”,ping得通,即使重新系統也不能解決 。   方法一:出現這一類的問題有可能的防毒軟體可能出於安全考慮做了什麼設定,讓電腦自己重新重新整理一下網路設定。具體操作:網路連線—>網路安裝嚮導 —&