天天學一個 Linux 命令(66):ss

image
推薦閱讀天天學一個 Linux 命令(65):netstatios

命令簡介

ss 命令用於查看網絡狀態。ss 命令能夠用來獲取 socket 統計信息,它顯示的信息和 netstat 命令顯示的信息相似,但 ss 的優點在於它可以顯示更多更詳細的有關 TCP 和鏈接狀態的信息,並且比 netstat 更快速更高效。服務器

當服務器的 socket 鏈接數量變得很是大時,不管是使用 netstat 命令仍是直接 cat /proc/net/tcp,執行速度都會很慢。當服務器維持的鏈接達到上萬個的時候,使用 ss命令比netstat 更節省時間。網絡

語法格式

ss [OPTIONS]
ss [ OPTIONS ] [ FILTER ]

選項說明

-h   #打印幫助信息
-V   #程序版本信息
-n   #不解析服務名稱
-r   #解析主機名
-a   #顯示全部套接字(sockets)
-l   #顯示監聽狀態的套接字(sockets)
-o   #顯示計時器信息
-e   #顯示詳細的套接字(sockets)信息
-m   #顯示套接字(socket)的內存使用狀況
-p   #顯示使用套接字(socket)的進程
-i   #顯示 TCP內部信息
-s   #顯示套接字(socket)使用概況
-4   #僅顯示IPv4的套接字(sockets)
-6   #僅顯示IPv6的套接字(sockets)
-0   #顯示 PACKET 套接字(socket)
-t   #僅顯示 TCP套接字(sockets)
-u   #僅顯示 UCP套接字(sockets)
-d   #僅顯示 DCCP套接字(sockets)
-w   #僅顯示 RAW套接字(sockets)
-x   #僅顯示 Unix套接字(sockets)
-f   #顯示 FAMILY類型的套接字(sockets)
-D   #將原始TCP套接字(sockets)信息轉儲到文件
-F   #從文件中都去過濾器信息

應用舉例

顯示全部TCP鏈接信息ssh

[root@CentOS7-1 ~]# ss -t -a
State      Recv-Q Send-Q     Local Address:Port                      Peer Address:Port                
LISTEN     0      128                    *:ssh                                  *:*                    
LISTEN     0      100            127.0.0.1:smtp                                 *:*                    
LISTEN     0      128            127.0.0.1:8125                                 *:*                    
LISTEN     0      128                    *:dnp-sec                              *:*                    
ESTAB      0      0          192.168.1.100:ssh                       192.168.1.93:59231                
LISTEN     0      128                 [::]:ssh                               [::]:*                    
LISTEN     0      100                [::1]:smtp                              [::]:*                    
LISTEN     0      128                [::1]:8125                              [::]:*                    
LISTEN     0      128                 [::]:dnp-sec                           [::]:*

顯示全部UDP鏈接信息socket

[root@CentOS7-1 ~]# ss -u -a
State      Recv-Q Send-Q     Local Address:Port                      Peer Address:Port                
UNCONN     0      0              127.0.0.1:8125                                 *:*                    
UNCONN     0      0              127.0.0.1:323                                  *:*                    
UNCONN     0      0                  [::1]:8125                              [::]:*                    
UNCONN     0      0                  [::1]:323                               [::]:*

顯示Sockets 摘要信息tcp

[root@CentOS7-1 ~]# ss -s
Total: 569 (kernel 1020)
TCP:   9 (estab 1, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0
Transport Total     IP        IPv6
*   1020      -         -        
RAW   1         0         1        
UDP   4         2         2        
TCP   9         5         4        
INET   14        7         7        
FRAG   0         0         0
#顯示全部狀態爲established的SSH鏈接
[root@CentOS7-1 ~]# ss -o state established '( dport = :ssh or sport = :ssh )'
Netid  Recv-Q Send-Q       Local Address:Port                        Peer Address:Port                
tcp    0      52           192.168.1.100:ssh                         192.168.1.93:59231                 timer:(on,235ms,0)
ss -o state established '( dport = :smtp or sport = :smtp )' 
#顯示全部狀態爲established的SMTP鏈接
ss -o state established '( dport = :http or sport = :http )' 
#顯示全部狀態爲Established的HTTP鏈接

ss與netstat的效率對比spa

[root@CentOS7-1 ~]# time netstat -an|awk '/^tcp/{++S[$NF]}END{for(a in S) print a,S[a]}' 
LISTEN 8
ESTABLISHED 1
real 0m0.021s
user 0m0.009s
sys 0m0.009s
[root@CentOS7-1 ~]# time ss  -tan|awk 'NR>1{++S[$1]}END{for (a in S) print a,S[a]}'
LISTEN 8
ESTAB 1
real 0m0.009s
user 0m0.007s
sys 0m0.001s

查看TCP或UDP鏈接數的腳本code

[root@CentOS7-1 ~]# ./get_tcp_or_udp-connetios.sh
Usage: sh  ./get_tcp_or_udp-connetios.sh [closed|closing|closewait|synrecv|synsent|finwait1|finwait2|listen|established|lastack|timewait]
[root@CentOS7-1 ~]# ./get_tcp_or_udp-connetios.sh timewait
0
[root@CentOS7-1 ~]# ./get_tcp_or_udp-connetios.sh listen
8
[root@CentOS7-1 ~]# ./get_tcp_or_udp-connetios.sh established
1
[root@CentOS7-1 ~]# ./get_tcp_or_udp-connetios.sh closed
0
[root@CentOS7-1 ~]# ./get_tcp_or_udp-connetios.sh closing
0
[root@CentOS7-1 ~]# ./get_tcp_or_udp-connetios.sh closewait
0
[root@CentOS7-1 ~]# ./get_tcp_or_udp-connetios.sh synrecv
0
[root@CentOS7-1 ~]# ./get_tcp_or_udp-connetios.sh lastack
0

有須要此腳本的讀者,能夠在本公衆號後臺對話框回覆關鍵字【鏈接數腳本】下載本腳本。blog

天天學一個 Linux 命令(63):route進程

天天學一個 Linux 命令(64):ifconfig

相關文章
相關標籤/搜索