ss

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

ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。

使用

Usage: ss [ OPTIONS ]
       ss [ OPTIONS ] [ FILTER ]
   -n, --numeric   显示端口号
   -r, --resolve       将ip地址转换成主机名
   -a, --all           展示所有的
   -l, --listening     展示listen状态的套接字
   -o, --options       show timer information
   -e, --extended      展示详细的socket信息
   -m, --memory        展示socket所占用的内存
   -p, --processes     展示使用该socket的进程id
   -i, --info          展示内部tcp信息
   -s, --summary       展示统计信息
   -b, --bpf           show bpf filter socket information
   -E, --events        continually display sockets as they are destroyed
   -Z, --context       display process SELinux security contexts
   -z, --contexts      display process and socket SELinux security contexts
   -N, --net           切换到指定的网络命令空间

   -4, --ipv4          display only IP version 4 sockets
   -6, --ipv6          display only IP version 6 sockets
   -0, --packet        display PACKET sockets
   -t, --tcp           display only TCP sockets
   -S, --sctp          display only SCTP sockets
   -u, --udp           display only UDP sockets
   -d, --dccp          display only DCCP sockets
   -w, --raw           display only RAW sockets
   -x, --unix          display only Unix domain sockets
       --vsock         display only vsock sockets
   -f, --family=FAMILY display sockets of type FAMILY
       FAMILY := {inet|inet6|link|unix|netlink|vsock|help}

   -K, --kill          forcibly close sockets, display what was closed
   -H, --no-header     Suppress header line

   -A, --query=QUERY, --socket=QUERY
       QUERY := {all|inet|tcp|udp|raw|unix|unix_dgram|unix_stream|unix_seqpacket|packet|netlink|vsock_stream|vsock_dgram}[,QUERY]

   -D, --diag=FILE     Dump raw information about TCP sockets to FILE
   -F, --filter=FILE   read filter information from FILE
       FILTER := [ state STATE-FILTER ] [ EXPRESSION ]
       STATE-FILTER := {all|connected|synchronized|bucket|big|TCP-STATES}
         TCP-STATES := {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|closed|close-wait|last-ack|listen|closing}
          connected := {established|syn-sent|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}
       synchronized := {established|syn-recv|fin-wait-{1,2}|time-wait|close-wait|last-ack|closing}
             bucket := {syn-recv|time-wait}
                big := {established|syn-sent|fin-wait-{1,2}|closed|close-wait|last-ack|listen|closing}
  -t: tcp

  -a:  all

  -l:  listening         【ss -l列出所有打开的网络连接端口】

  -s:  summary        【显示 Sockets 摘要】

  -p:  progress

  -n:  numeric         【不解析服务名称】

  -r:  resolve        【解析服务名称】

  -m: memory        【显示内存情况】

常用

  1. 列出当前监听端口

    ss -l

  2. 列出打开套接字的进程

    ss -pl

  3. 列出所有的tcp sockets

    ss -t -a

  4. 列出所有的udp sockets

    ss -u -a

  5. ip地址筛选

    ss src 127.0.0.1
    ss src 127.0.0.1:80
    ss dst 127.0.0.1

ss -t -n src *:443 or dst *:443 获取443端口的socket

[root@iz2zecj7a5r32f2axsctb9z shell]# ss -t -n dst *:443 or src *:443
State      Recv-Q Send-Q                    Local Address:Port                                   Peer Address:Port              
FIN-WAIT-2 0      0                        172.17.147.135:443                                  123.112.16.100:61788   
  1. 端口筛选

    ss dport/sport OP port
    OP 表示运算符 <=(le) >=(ge) =(eq) !=(ne) <(lt) >(gt)
    例子:
    ss ( sport = :2380 or sport = :443 )

ss -t dport eq 2380 获取目标端口为2380的tcp协议的socket

[root@iz2zecj7a5r32f2axsctb9z shell]# ss -t sport eq 2380
State      Recv-Q Send-Q                  Local Address:Port                                   Peer Address:Port                
ESTAB      0      0                           127.0.0.1:2380                                      127.0.0.1:50940                
ESTAB      0      0                           127.0.0.1:2380                                      127.0.0.1:50952                
ESTAB      0      0                           127.0.0.1:2380                                      127.0.0.1:42274     
  1. 过滤条件

    ss -o state time-wait
    ss -o state time-wait ( sport = :2380 or sport = :443 )

  2. 统计信息 ss -s

    [root@iz2zecj7a5r32f2axsctb9z include]# ss -s
    Total: 250 (kernel 398)
    TCP:   146 (estab 49, closed 85, orphaned 0, synrecv 0, timewait 85/0), ports 0
    Transport Total     IP        IPv6
    \*      398       -         -        
    RAW      0         0         0        
    UDP      6         5         1        
    TCP      61        60        1        
    INET      67        65        2        
    FRAG      0         0         0        
文档更新时间: 2021-03-05 20:54   作者:周国强