linux基本命令(57) ss命令

2021-07-13 02:39:35 字數 4945 閱讀 4321

ss是socket statistics的縮寫。顧名思義,ss命令可以用來獲取socket統計資訊,它可以顯示和netstat類似的內容。但ss的優勢在於它能夠顯示更多更詳細的有關tcp和連線狀態的資訊,而且比netstat更快速更高效。

當伺服器的socket連線數量變得非常大時,無論是使用netstat命令還是直接cat /proc/net/tcp,執行速度都會很慢。可能你不會有切身的感受,但請相信我,當伺服器維持的連線達到上萬個的時候,使用netstat等於浪費生命,而用ss才是節省時間。

天下武功唯快不破。ss快的秘訣在於,它利用到了tcp協議棧中tcp_diag。tcp_diag是乙個用於分析統計的模組,可以獲得linux 核心中第一手的資訊,這就確保了ss的快捷高效。當然,如果你的系統中沒有tcp_diag,ss也可以正常執行,只是效率會變得稍慢。(但仍然比 netstat要快。)

1.命令格式:

ss [引數]

ss [引數] [過濾]

2.命令功能:

ss(socket statistics的縮寫)命令可以用來獲取socket統計資訊,此命令輸出的結果類似於netstat輸出的內容,但它能顯示更多更詳細的 tcp連線狀態的資訊,且比 netstat 更快速高效。它使用了tcp協議棧中 tcp_diag(是乙個用於分析統計的模組),能直接從獲得第一手核心資訊,這就使得 ss命令快捷高效。在沒有 tcp_diag,ss也可以正常執行。

3.命令引數:

-h, --help

幫助資訊

-v, --version

程式版本資訊

-n, --numeric

不解析服務名稱

-r, --resolve        解析主機名

-a, --all

顯示所有套接字(sockets)

-l, --listening

顯示監聽狀態的套接字(sockets)

-o, --options        顯示計時器資訊

-e, --extended       顯示詳細的套接字(sockets)資訊

-m, --memory         顯示套接字(socket)的記憶體使用情況

-p, --processes

顯示使用套接字(socket)的程序

-i, --info

顯示 tcp內部資訊

-s, --summary

顯示套接字(socket)使用概況

-4, --ipv4           僅顯示ipv4的套接字(sockets)

-6, --ipv6           僅顯示ipv6的套接字(sockets)

-0, --packet

顯示 packet 套接字(socket)

-t, --tcp

僅顯示 tcp套接字(sockets)

-u, --udp

僅顯示 ucp套接字(sockets)

-d, --dccp

僅顯示 dccp套接字(sockets)

-w, --raw

僅顯示 raw套接字(sockets)

-x, --unix

僅顯示 unix套接字(sockets)

-f, --family=family  顯示 family型別的套接字(sockets),family可選,支援  unix, inet, inet6, link, netlink

-a, --query=query, --socket=query

query := [,query]

-d, --diag=file     將原始tcp套接字(sockets)資訊轉儲到檔案

-f, --filter=file   從檔案中都去過濾器資訊

filter := [ state tcp-state ] [ expression ]

4.使用例項:

例項1:顯示tcp連線

命令:ss -t -a

例項2:顯示 sockets 摘要

命令:ss -s

例項3:列出所有開啟的網路連線埠

命令:ss -l

例項4:檢視程序使用的socket

命令:ss -pl

例項5:找出開啟套接字/埠應用程式

命令:ss -lp|grep 3306

例項6:顯示所有udp sockets

命令:ss -u -a

例項7:顯示所有狀態為established的smtp連線

命令:ss -o state established '( dport = :smtp or sport = :smtp )' 

例項8:顯示所有狀態為established的http連線

命令:ss -o state established '( dport = :http or sport = :http )' 

例項9:列舉出處於 fin-wait-1狀態的源埠為 80或者 443,目標網路為 193.233.7/24所有 tcp套接字

命令:ss -o state fin-wait-1 '( sport = :http or sport = :https )' dst 193.233.7/24

例項10:用tcp 狀態過濾sockets:

命令:

ss -4 state filter-name-here 

ss -6 state filter-name-here

說明:

filter-name-here 可以代表以下任何乙個:

established

syn-sent

syn-recv

fin-wait-1

fin-wait-2

time-wait

closed

close-wait

last-ack

listen

closing

all : 所有以上狀態

connected : 除了listen and closed的所有狀態

synchronized :所有已連線的狀態除了syn-sent

bucket : 顯示狀態為maintained as minisockets,如:time-wait和syn-recv.

big : 和bucket相反.

例項11:匹配遠端位址和埠號

命令:

例項12:匹配本地位址和埠號

命令:

例項13:將本地或者遠端埠和乙個數比較

命令:

ss dport op port

ss sport op port

說明:

ss dport op port 遠端埠和乙個數比較

;ss 

sport op port 本地埠和乙個數比較。

op 可以代表以下任意乙個:

<= or le : 小於或等於埠號

>= or ge : 大於或等於埠號

== or eq : 等於埠號

!= or ne : 不等於埠號

< or gt : 小於埠號

> or lt : 大於埠號

例項14:ss 和 netstat 效率對比

命令:

time netstat -at

time ss

說明:

用time 命令分別獲取通過netstat和ss命令獲取程式和概要占用資源所使用的時間

。在伺服器連線數比較多的時候,

netstat的效率完全沒法和ss比。

linux基本命令

linux常用命令 基礎 eg man ls 就可以檢視ls相關的用法 注 按q鍵或者ctrl c退出,在linux下可以使用ctrl c終止當前程式執行。2.ls 檢視目錄或者檔案的屬 列舉出任一目錄下面的檔案 eg ls usr man ls l a.d表示目錄 directory 如果是乙個 ...

《linux基本命令》

博主部落格 斷橋殘雪 uname 顯示版本資訊 同win2k的 ver dir 顯示當前目錄檔案,ls al 顯示包括隱藏檔案 同win2k的 dir pwd 查詢當前所在的目錄位置 cd cd 回到上一層目錄,注意cd 與.之間有空格。cd 返回到根目錄。cat 檔名 檢視檔案內容 cat abc...

LINUX 基本命令

檔案和目錄操作的基本命令 cat clear cmp cut diff du emacs fgrep file grep head ln less more pico pwd sort stat strings tail touch umask uniq vi wc whatis ls ls 選項 ...