小言_互联网的博客

每天学一个 Linux 命令(66):ss

377人阅读  评论(0)

点击下方“民工哥技术之路”,选择“设为星标”

回复“1024”获取独家整理的学习资料!

推荐阅读:每天学一个 Linux 命令(65):netstat

命令简介

ss 命令用于查看网络状态。ss 命令可以用来获取 socket 统计信息,它显示的信息和 netstat 命令显示的信息类似,但 ss 的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,而且比 netstat 更快速更高效。

当服务器的 socket 连接数量变得非常大时,无论是使用 netstat 命令还是直接 cat /proc/net/tcp,执行速度都会很慢。当服务器维持的连接达到上万个的时候,使用 ss命令比netstat 更节省时间。

语法格式


   
  1. ss [OPTIONS]
  2. ss [ OPTIONS ] [ FILTER ]

选项说明


   
  1. -h   #打印帮助信息
  2. -V   #程序版本信息
  3. -n   #不解析服务名称
  4. -r   #解析主机名
  5. -a   #显示所有套接字(sockets)
  6. -l   #显示监听状态的套接字(sockets)
  7. -o   #显示计时器信息
  8. -e   #显示详细的套接字(sockets)信息
  9. -m   #显示套接字(socket)的内存使用情况
  10. -p   #显示使用套接字(socket)的进程
  11. -i   #显示 TCP内部信息
  12. -s   #显示套接字(socket)使用概况
  13. -4   #仅显示IPv4的套接字(sockets)
  14. -6   #仅显示IPv6的套接字(sockets)
  15. -0   #显示 PACKET 套接字(socket)
  16. -t   #仅显示 TCP套接字(sockets)
  17. -u   #仅显示 UCP套接字(sockets)
  18. -d   #仅显示 DCCP套接字(sockets)
  19. -w   #仅显示 RAW套接字(sockets)
  20. -x   #仅显示 Unix套接字(sockets)
  21. -f   #显示 FAMILY类型的套接字(sockets)
  22. -D   #将原始TCP套接字(sockets)信息转储到文件
  23. -F   #从文件中都去过滤器信息

应用举例

显示所有TCP连接信息


   
  1. [root@CentOS7 -1 ~]# ss -t -a
  2. State      Recv-Q Send-Q     Local Address:Port                      Peer Address:Port                
  3. LISTEN      0       128                    *:ssh                                  *:*                    
  4. LISTEN      0       100             127.0 .0 .1:smtp                                 *:*                    
  5. LISTEN      0       128             127.0 .0 .1: 8125                                 *:*                    
  6. LISTEN      0       128                    *:dnp-sec                              *:*                    
  7. ESTAB       0       0           192.168 .1 .100:ssh                        192.168 .1 .93: 59231                
  8. LISTEN      0       128                 [::]:ssh                               [::]:*                    
  9. LISTEN      0       100                [:: 1]:smtp                              [::]:*                    
  10. LISTEN      0       128                [:: 1]: 8125                              [::]:*                    
  11. LISTEN      0       128                 [::]:dnp-sec                           [::]:*                    

显示所有UDP连接信息


   
  1. [root@CentOS7 -1 ~]# ss -u -a
  2. State      Recv-Q Send-Q     Local Address:Port                      Peer Address:Port                
  3. UNCONN      0       0               127.0 .0 .1: 8125                                 *:*                    
  4. UNCONN      0       0               127.0 .0 .1: 323                                  *:*                    
  5. UNCONN      0       0                  [:: 1]: 8125                              [::]:*                    
  6. UNCONN      0       0                  [:: 1]: 323                               [::]:*    

显示Sockets 摘要信息


   
  1. [root@CentOS7 -1 ~]# ss -s
  2. Total:  569 (kernel  1020)
  3. TCP:    9 (estab  1, closed  0, orphaned  0, synrecv  0, timewait  0/ 0), ports  0
  4. Transport Total     IP        IPv6
  5. *    1020      -         -        
  6. RAW    1          0          1        
  7. UDP    4          2          2        
  8. TCP    9          5          4        
  9. INET    14         7          7        
  10. FRAG    0          0          0        

   
  1. #显示所有状态为established的SSH连接
  2. [root@CentOS7 -1 ~]# ss -o state established  '( dport = :ssh or sport = :ssh )'
  3. Netid  Recv-Q Send-Q       Local Address:Port                        Peer Address:Port                
  4. tcp     0       52            192.168 .1 .100:ssh                          192.168 .1 .93: 59231                 timer:(on, 235ms, 0)
  5. ss -o state established  '( dport = :smtp or sport = :smtp )' 
  6. #显示所有状态为established的SMTP连接
  7. ss -o state established  '( dport = :http or sport = :http )' 
  8. #显示所有状态为Established的HTTP连接

ss与netstat的效率对比


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

查看TCP或UDP连接数的脚本


   
  1. [root@CentOS7 -1 ~]# ./get_tcp_or_udp-connetios.sh
  2. Usage: sh  ./get_tcp_or_udp-connetios.sh [closed|closing|closewait|synrecv|synsent|finwait1|finwait2|listen|established|lastack|timewait]
  3. [root@CentOS7 -1 ~]# ./get_tcp_or_udp-connetios.sh timewait
  4. 0
  5. [root@CentOS7 -1 ~]# ./get_tcp_or_udp-connetios.sh listen
  6. 8
  7. [root@CentOS7 -1 ~]# ./get_tcp_or_udp-connetios.sh established
  8. 1
  9. [root@CentOS7 -1 ~]# ./get_tcp_or_udp-connetios.sh closed
  10. 0
  11. [root@CentOS7 -1 ~]# ./get_tcp_or_udp-connetios.sh closing
  12. 0
  13. [root@CentOS7 -1 ~]# ./get_tcp_or_udp-connetios.sh closewait
  14. 0
  15. [root@CentOS7 -1 ~]# ./get_tcp_or_udp-connetios.sh synrecv
  16. 0
  17. [root@CentOS7 -1 ~]# ./get_tcp_or_udp-connetios.sh lastack
  18. 0

有需要此脚本的读者,可以在本公众号后台对话框回复关键字【连接数脚本】下载本脚本。

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

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

推荐阅读 点击标题可跳转

彻夜怒肝!Docker 疑难杂症解决方案已撸完,快要裂开了

蚂蚁金服 CEO 突然辞职!去向很意外。。。

再见 FTP/SFTP!下一代文件传输利器 Croc来 了!

比 ELK 更简洁、高效!企业级日志平台后起之秀 Graylog!

搞懂这 9 步,DNS 访问原理就明明白白了

关于 Kubernetes 的这些原理,你一定要了解

搞懂日志采集利器 Filebeat 并不难!

这 5 种常用运维监控工具都不会?你算啥运维人

Docker 数据管理介绍


转载:https://blog.csdn.net/mingongge/article/details/114957315
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场