ss命令是經典netstat的現代替代品。您可以在Linux上使用它來獲取有關網路連線的統計資訊。下面是如何使用這個方便的工具。
ss代替了不推薦使用的netstat命令,它提供了有關計算機如何與其他計算機、網路和服務通訊的詳細資訊。
ss顯示傳輸控制協議(TCP)、使用者資料報協議(UDP)、Unix(程序間)和原始套接字的統計資訊。原始套接字在網路OSI級別執行,這意味著TCP和UDP頭必須由應用程式軟體處理,而不是由傳輸層處理。Internet控制訊息協議(ICMP)訊息和ping實用程式都使用原始套接字。
您不必安裝ss,因為它已經是最新Linux發行版的一部分。但是,它的輸出可能非常長,我們已經得到了包含630多行的結果。結果也非常廣泛。
正因為如此,我們已經包含了我們獲得的結果的文字表示,因為它們不適合螢幕截圖。我們對它們進行了修剪,使它們更易於管理。
在沒有命令列選項的情況下使用ss會列出不偵聽的套接字。也就是說,它列出了不處於偵聽狀態的套接字。
要檢視此內容,請鍵入以下內容:
ssNetid 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列如下:
對於UDP套接字,“狀態”列通常為空。對於TCP套接字,它可以是以下之一:
要檢視偵聽套接字,我們將新增-l(偵聽)選項,如下所示:
ss -lNetid 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 -aNetid 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 [::]:*無論狀態如何,輸出都包含所有套接字。
也可以應用篩選器,以便僅顯示匹配的套接字。我們將使用-t(TCP)選項,因此只列出TCP套接字:
不鏽鋼-a-t
-u(UDP)選項執行相同型別的過濾操作。這次,我們將只看到UDP套接字:
ss -a -uState 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套接字,可以包括-x(Unix)選項,如下所示:
ss -a -xNetid 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可以使用-4(IPV4)選項列出使用TCP/IP版本4協議的套接字:
ss -a -4可以使用-6(IPV6)選項啟用匹配的IP版本6篩選器,如下所示:
ss -a -6可以使用state選項按套接字所處的狀態列出套接字。這適用於已建立、偵聽或關閉狀態。我們還將使用resolve選項(-r),它嘗試將網路地址解析為名稱,將埠解析為協議。
以下命令將查詢已建立的TCP連線,ss將嘗試解析這些名稱:
ss -t -r state established列出了處於已建立狀態的四個連線。主機名ubuntu20-04已經解析,第二行的ssh連線顯示“ssh”而不是22。
我們可以重複此步驟以查詢處於偵聽狀態的套接字:
ss -t -r state listeningRecv-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 )’我們可以使用協議名或通常與該協議關聯的埠。Secure Shell(SSH)的預設埠是埠22。
我們將在一個命令中使用協議名稱,然後使用埠號重複它:
ss -a ‘( dport = :ssh or sport = :ssh )’ ss -a ‘( dport = :22 or sport = :22 )’正如所料,我們得到了相同的結果。
使用dst(destination)選項,我們可以列出到特定目標IP地址的連線。
我們鍵入以下內容:
ss -a dst 192.168.4.25要檢視哪些程序正在使用套接字,可以使用processs選項(-p),如下所示(注意必須使用sudo):
sudo ss -t -pState 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以前提供的資訊相同的資訊,但方式更簡單、更易訪問。您可以檢視手冊頁瞭解更多選項和提示。
... 在本文中,我將向您展示如何在Linux上安裝、執行和使用PowerShell! ...
...許您在Android裝置上安裝誠實善良的Linux應用程式。下面是如何使用Termux應用程式。 ...
... 如何在windows10上安裝linux bash shell ...
要在Linux中重新命名檔案嗎?如果您知道如何在Windows、macOS或Chrome作業系統中完成這項工作,那麼您就知道如何在這裡完成這項工作。在大多數版本的Linux上,您只需右鍵單擊一個檔案並選擇Rename選項。 ...
想在Linux系統上新增使用者但不知道如何新增?在Linux上使用命令列介面管理使用者無疑是一項複雜的工作。而對於初學者來說,即使新增新使用者也是一場噩夢。 ...
...版本可以讓您對安全更新做出重要決定。我們將向您展示如何找到這些,無論您使用哪個發行版。 滾動和點釋放 你知道你在執行哪個版本的Linux嗎?你能找到核心版本嗎?Linux的滾動發行版,如Arch、Manjaro和openSUSE,經常使用自...
Linux上有多種型別的環境變數。瞭解如何檢視它們,為本地和遠端登入建立它們,並使它們在重新啟動後仍然有效。 環境變數的工作原理 啟動終端視窗及其內部的shell時,會引用一組變數,以確保shell配置正確。這些變數還確...