乐趣区

关于linux:每天学一个-Linux-命令66ss


举荐浏览 :每天学一个 Linux 命令(65):netstat

命令简介

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 连贯信息

[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 连贯信息

[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 摘要信息

[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 的效率比照

[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 连接数的脚本

[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

有须要此脚本的读者,能够在本公众号后盾对话框回复关键字【连接数脚本】下载本脚本。

每天学一个 Linux 命令(63):route

每天学一个 Linux 命令(64):ifconfig

退出移动版