首頁 > 軟體

Linux ss命令使用詳解:獲取socket統計資訊

2020-06-16 18:09:18

 

ss命令用來顯示處於活動狀態的通訊端資訊。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也可以正常執行,只是效率會變得稍慢。

 

語法

 

ss(選項)

 

選項

 

-h:顯示幫助資訊;
-V:顯示指令版本資訊;
-n:不解析服務名稱,以數位方式顯示;
-a:顯示所有的通訊端;
-l:顯示處於監聽狀態的通訊端;
-o:顯示計時器資訊;
-m:顯示通訊端的記憶體使用情況;
-p:顯示使用通訊端的進程資訊;
-i:顯示內部的TCP資訊;
-4:只顯示ipv4的通訊端;
-6:只顯示ipv6的通訊端;
-t:只顯示tcp通訊端;
-u:只顯示udp通訊端;
-d:只顯示DCCP通訊端;
-w:僅顯示RAW通訊端;
-x:僅顯示UNIX域通訊端。

 

範例

 

顯示ICP連線

 

[root@localhost ~]# ss -t -a

 

State      Recv-Q Send-Q        Local Address:Port        Peer Address:Port 
LISTEN      0      0                        *:3306        *:*     
LISTEN      0      0                        *:http        *:*     
LISTEN      0      0                        *:ssh          *:*     
LISTEN      0      0                                        127.0.0.1:smtp  *:*     
ESTAB      0      0          112.124.15.130:42071        42.156.166.25:http   
ESTAB      0      0            112.124.15.130:ssh          121.229.196.235:33398

 

 

 

顯示 Sockets 摘要

 

[root@localhost ~]# ss -s
Total: 172 (kernel 189)
TCP:  10 (estab 2, closed 4, orphaned 0, synrecv 0, timewait 0/0), ports 5

 


Transport Total    ip        IPv6
*        189      -        -
RAW      0        0        0
UDP      5        5        0
TCP      6        6        0
INET      11        11        0
FRAG      0        0        0

 


列出當前的established, closed, orphaned and waiting TCP sockets

 

列出所有開啟的網路連線埠

 

[root@localhost ~]# ss -l

 

Recv-Q Send-Q            Local Address:Port        Peer Address:Port
0      0                            *:3306        *:*
0      0                            *:http        *:*
0      0                            *:ssh          *:*
0      0                    127.0.0.1:smtp        *:*

 


檢視進程使用的socket

 

[root@localhost ~]# ss -pl

 

Recv-Q Send-Q  Local Address:Port    Peer Address:Port
0      0                  *:3306    *:*  users:(("MySQLd",1718,10))
0      0                  *:http    *:*  users:(("nginx",13312,5),("nginx",13333,5))
0      0                    *:ssh    *:*  users:(("sshd",1379,3))
0      0          127.0.0.1:smtp    *:*  us

 


找出開啟通訊端/埠應用程式

 

[root@localhost ~]# ss -pl | grep 3306
0  0   *:3306   *:*   users:(("mysqld",1718,10))

 

顯示所有UDP Sockets

 

[root@localhost ~]# ss -u -a

 

State      Recv-Q Send-Q      Local Address:Port    Peer Address:Port 
UNCONN      0      0            *:syslog              *:*     
UNCONN      0      0            112.124.15.130:ntp    *:*     
UNCONN      0      0            10.160.7.81:ntp        *:*     
UNCONN      0      0            127.0.0.1:ntp          *:*     
UNCONN      0      0            *:ntp                  *:*

 


IT145.com E-mail:sddin#qq.com