2021-05-12 14:32:11
Linux ss命令使用詳解:獲取socket統計資訊
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 *:*
相關文章