zoukankan      html  css  js  c++  java
  • ss-套接字监控工具

    ss(Socket Statistics) - another utility to investigate sockets(研究套接字的另一个实用程序,原先的是netstat)
    ss用于转储套接字统计信息。它允许显示类似于netstat的信息。它可以显示更多的TCP和状态信息
    工具。

    语法格式:

    ss [options] [ FILTER ]
    

    [options]

    • -n --numeric:不解析服务名称
    • -r --resolve:解析服务名称
    • -a --all:显示所有套接字
    • -l --listen:显示监听状态的套接字
    • -o --option:显示计时器信息
    • -p --processes:显示进程
    • -4 --ipv4:显示ipv4相关信息
    • -6 --ipv6:显示ipv6相关信息
    • -s --summary:显示socket概况
    • -t --tcp:显示tcp套接字
    • -u --udp:显示udp套接字
    • -d --dccp:显示dccp套接字
    • -w --raw:显示raw套接字
    • -x --unix:显示unix套接字

    state-filter(状态过滤):
    状态过滤器允许构造任意一组要匹配的状态。

    格式:

    ss [option] stat [state-filter] [ EXPRESSION ]
    

    [state-filter]:
    所有标准的tcp状态:established,syn-sent,syn-recv,fin-wait-1,fin-wait-2,time-wait,closed,close-wait,last-ack,listen,closing。每个状态什么意思,自己了解tcp相关信息。

    • all :所有状态
    • connected :所有状态,除了listenclosed
    • synchronized :所有的connected,除了syn-sent
    • bucket :显示状态为maintained as minisockets,如:time-wait和syn-recv.
    • big :和bucket相反

    [ EXPRESSION ]

    • dport :目标端口
    • sport :源端口
      其它参考官方文档

    示例一:

    [root@node1 ~]# ss -n state all '( sport = :ssh )'  #查看对ssh端口的所有状态        
    Netid  State      Recv-Q Send-Q                                  Local Address:Port                                                 Peer Address:Port              
    tcp    LISTEN     0      128                                                 *:22                                                              *:*                  
    tcp    ESTAB      0      0                                        192.168.2.88:22                                                  192.168.2.230:24746              
    tcp    ESTAB      0      0                                        192.168.2.88:22                                                   192.168.2.55:54205              
    tcp    LISTEN     0      128                                                :::22                                                             :::*  
    
    [root@node1 ~]# ss -n state connected '( sport = :ssh )'   #查看ssh端口的connect状态信息 ,其实这里加个 | wc -l 就能查看有多个个connected了。
    Netid  State      Recv-Q Send-Q                                  Local Address:Port                                                 Peer Address:Port              
    tcp    ESTAB      0      0                                        192.168.2.88:22                                                  192.168.2.230:24746              
    tcp    ESTAB      0      0                                        192.168.2.88:22                                                   192.168.2.55:54205
    
    [root@node1 ~]$ ss -n state connected '( sport = :443 )'| wc -l   #查看web服务器当前有多少个连接状态
    435
    
    [root@node1 ~]# ss -n state connected '( sport = :ssh )' dst 192.168.2.55  #查看ssh connect状态,并且目标地址是192.168.2.55的信息
    Netid  State      Recv-Q Send-Q                                  Local Address:Port                                                 Peer Address:Port              
    tcp    ESTAB      0      0                                        192.168.2.88:22                                                   192.168.2.55:54205  
    

    这里的sportdst都和标准的理解中的意思完全相反了。源端口变成本机的目标端口,只要记住是反转的,即可。

    示例二:

    ~]$ netstat -an|grep 8081|awk '{count[$6]++} END{for (i in count) print(i,count[i])}' 
    TIME_WAIT 41
    ESTABLISHED 27
    LISTEN 1
    
    ~]$ ss -n state established '( sport = :8081 )' | wc -l   #查看单个连接属性有多少个
    27
    
    ~]$ ss -an | grep 8081|awk '{count[$1]++} END{for (i in count) print(i,count[i])}' 
    ...
    

    示例三:

    ~]# ss -tanlp     #常用命令组合
    users:(("python3.5",pid=10052,fd=43))
    LISTEN     0      128                                                    *:22                                                                 *:*                   users:(("sshd",pid=4125,fd=3))
    LISTEN     0      128                                                    *:8888                                                               *:*                   users:(("jupyter-noteboo",pid=5375,fd=4))
    LISTEN     0      128                                                   :::22                                                                :::*                   users:(("sshd",pid=4125,fd=4))
    LISTEN     0      128                                                  ::1:631                                                               :::*                   users:(("cupsd",pid=4122,fd=11))
    LISTEN     0      100                                                  ::1:25                                                                :::*                   users:(("master",pid=4222,fd=14))
    ...
    

    比较netstatss哪个运行速度更快,具体原理可自行google,但实验可以得到哪个命令更快。

    ~]$ time netstat -ant | grep EST | wc -l
    408
    
    real    0m0.111s
    user    0m0.007s
    sys     0m0.098s
    ~]$ time ss -ant state established | wc -l
    423
    
    real    0m0.022s
    user    0m0.006s
    sys     0m0.018s
    
  • 相关阅读:
    iOS Mapkit 定位REGcode地理位置偏移
    制作mac U盘启动
    mac git xcrun error active developer path 错误
    xcode 修改 organization name 和 company identifier
    PHP 修改配置文件后重启命名
    使用 PHP 构建的 Web 应用如何避免 XSS 攻击
    PHP 可变变量
    使用 PHP 构建的 Web 应用如何避免 XSS 攻击
    git 放弃本地修改,强制拉取更新
    PHP smarty模版引擎基本安装
  • 原文地址:https://www.cnblogs.com/dance-walter/p/10271853.html
Copyright © 2011-2022 走看看