Linux使用ss命令檢視socket狀態

2021-09-21 11:50:50 字數 4159 閱讀 7445

ss命令用來顯示處於活動狀態的套接字資訊。ss命令可以用來獲取socket統計資訊,它可以顯示和netstat類似的內容。但ss的優勢在於它能夠顯示更多更詳細的有關tcp和連線狀態的資訊,而且比netstat更快速更高效。 

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

所有的tcp sockets

所有的udp sockets

所有ssh/ftp/ttp/https持久連線

所有連線到xserver的本地程序

使用state(例如:connected, synchronized, syn-recv, syn-sent,time-wait)、位址、埠過濾

所有的state fin-wait-1 tcpsocket連線以及更多

很多流行的linux發行版都支援ss以及很多監控工具使用ss命令.熟悉這個工具有助於您更好的發現與解決系統效能問題.本人強烈建議使用ss命令替代netstat部分命令,例如netsat -ant/lnt等.

統計伺服器併發連線數:

[root@localhost ~]# time netstat -antlp | grep est | wc -l 1

[root@localhost ~]# time ss -o state established | wc -l

140

結果很明顯ss統計併發連線數效率完敗netstat,在ss能搞定的情況下, 你還會在選擇netstat嗎?

常用ss命令:

ss -l 顯示本地開啟的所有埠

ss -pl 顯示每個程序具體開啟的socket

ss -t -a 顯示所有tcp socket

ss -u -a 顯示所有的udp socekt

ss -o state established '( dport = :smtp or sport = :smtp )' 顯示所有已建立的smtp連線

ss -o state established '( dport = :http or sport = :http )' 顯示所有已建立的http連線

ss -x src /tmp/.x11-unix/* 找出所有連線x伺服器的程序

ss -s 列出當前socket詳細資訊:

顯示sockets簡要資訊

列出當前已經連線,關閉,等待的tcp連線:

[root@localhost ~]# ss -s

total: 246 (kernel 276)

tcp:   70 (estab 1, closed 59, orphaned 0, synrecv 0, timewait 58/0), ports 0

transport total     ip        ipv6

ss列出每個程序名及其監聽的埠:

ss列所有的tcp sockets:

ss列出所有udp sockets:

ss列出所有http連線中的連線:

以上包含對外提供的80,以及訪問外部的80

用以上命令完美的替代netstat獲取http併發連線數,監控中常用到 

ss列出本地哪個程序連線到x server:

[root@localhost ~]# ss -x src /tmp/.x11-unix/*

netid state      recv-q send-q local address:port                 peer address:port

ss列出處在fin-wait-1狀態的http、https連線:

ss常用的state狀態: 

established

syn-sent

syn-recv

fin-wait-1

fin-wait-2

time-wait

closed

close-wait

last-ack

listen

closing

all : all of the above states

connected : all the states except for listen and closed

synchronized : all the connected states except for syn-sent

bucket : show states, which are maintained as minisockets, i.e. time-wait and syn-recv.

big : opposite to bucket state. 

ss使用ip位址篩選:

ss src address_pattern

src:表示**

address_pattern:表示位址規則

如下:ss src 120.33.31.1 # 列出來之20.33.31.1的連線

#列出來至120.33.31.1,80埠的連線

ss使用埠篩選:

ss dport op port

op:是運算子

port:表示埠

dport:表示過濾目標埠、相反的有sport

op運算子如下:

<= or le : 小於等於 >= or ge : 大於等於

== or eq : 等於

!= or ne : 不等於埠

< or lt : 小於這個埠 > or gt : 大於埠

op例項:

ss sport = :http 也可以是 ss sport = :80

列印tcp ipv4 的sockets資訊: 

[root@localhost ~]# ss -4 state established

netid recv-q send-q local address:port                 peer address:port

tcp   0      0      172.16.25.192:ssh                  172.16.25.98:52581

檢視ss命令的幫助資訊: 

文章參考:

Linux 命令 ss 檢視套接字統計資訊

ss options filter h,help 顯示幫助資訊。v,version 顯示版本資訊。n,numeric 不解析服務名稱。r,resolve 試著解析數字形式的位址和埠。a,all 顯示所有的套接字。l,listening 顯示所有監聽狀態的套接字。o,options 顯示計時器資訊。e...

Linux 命令(5) ss 命令

ss是socket statistics的縮寫。ss命令用於顯示socket狀態.他可以顯示packet sockets,tcp sockets,udp sockets,dccp sockets,raw sockets,unix domain sockets等等統計.它比其他工具展示等多tcp和st...

Linux基礎命令之SS

ss是socket statistics的縮寫。顧名思義,ss命令可以用來獲取socket統計資訊,它可以顯示和netstat類似的內容。但ss的優勢在於它能夠顯示更多更詳細的有關tcp和連線狀態的資訊,而且比netstat更快速更高效。當伺服器的socket連線數量變得非常大時,無論是使用nets...