有了ss工具就可以丢掉netstat了

2021-12-13 17:51:07 浏览数 (1)

ss是Socket Statistics的缩写,负责统计主机上网络连接信息,在ss之前使用最多的是netstat。从本质上来说ss在性能上可以完爆netstat,之所以快,主要原因是因为:netstat是直接cat /proc/net/tcp,然后对网络连接信息进行统计,ss使用TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以直接获得Linux 内核信息,从而保证了ss的高性能

1、ss使用格式

代码语言:javascript复制
ss [ OPTIONS ]
ss [ OPTIONS ] [ FILTER ]

在linux中也可以通过man ss的形式查看具体的参数,如下图所示:

2、ss常用命令

2.1 查看已创建连接

代码语言:javascript复制
ss | head -n 5

执行结果如下:

代码语言:javascript复制
[root@localhost ~]# ss | head -n 5
Netid State Recv-Q Send-Q Local Address:Port Peer Address:PortProcess
u_str  ESTAB  0      0       * 19098                 * 18222
u_str  ESTAB  0      0       * 19441                 * 19440
u_str  ESTAB  0      0       * 19440                 * 19441
u_str  ESTAB  0      0       * 19396                 * 19397

2.2 查看已监听套接字

代码语言:javascript复制
ss -lt

执行结果如下:

代码语言:javascript复制
[root@localhost ~]# ss -lt
State         Recv-Q         Send-Q                 Local Address:Port 
LISTEN  0      128                   *:http                  *:*
LISTEN  0      100           127.0.0.1:smtp                  *:*
LISTEN  0      128               *:entexthigh                *:*

2.3 查看拥有套接字的进程

使用-p选项打印出拥有套接字的进程或PID号。使用命令如下:

代码语言:javascript复制
ss -pl

结果如下:

代码语言:javascript复制
Netid  State   Recv-Q  Send-Q     Local Address:Port           Peer Address:Port  Process
nl     UNCONN  0       0          rtnl:41                         *
nl     UNCONN  0       0          rtnl:kernel                     *
nl     UNCONN  0       0          rtnl:-231054382                 *
nl     UNCONN  0       0          tcpdiag:kernel            

2.4 解析数字地址/端口

ss后加上-r参数可以将ip地址和端口解析成可读字符串,命令如下:

代码语言:javascript复制
ss -r

结果如下:

代码语言:javascript复制
[root@localhost ~]# ss -r
Netid       State       Recv-Q        Send-Q       Local Address:Port     Peer Address:Port
tcp         ESTAB      0                 0          renwolecom:mysql        renwolecom:48134

2.4 查看IPV4/IPV6套接字

通过l4可以查看IPV4类型套接字,同理l6可以查看IPV6类型套接字。命令如下:

代码语言:javascript复制
ss -l4
ss -l6

结果如下:

代码语言:javascript复制
root@localhost ~]# ss -l6
Netid         State         Recv-Q         Send-Q      Local Address:Port    Peer Address:Port       Process
[root@localhost ~]# ss -l4
Netid         State          Recv-Q         Send-Q     Local Address:Port    Peer Address:Port       Process
udp           UNCONN         0              0            0.0.0.0:bootpc

2.5 查看TCP/UDP/UNIX 套接字

-t参数可以只显示tcp套接字,-u可以只查看UDP套接字,-x可以查看unix套接字。使用命令如下:

代码语言:javascript复制
ss -t
ss -u
ss -x

结果如下:

代码语言:javascript复制
[root@localhost ~]# ss -t
State    Recv-Q    Send-Q   Local Address:Port   Peer Address:Port 
LISTEN      0      128                *:http         *:*
[root@localhost ~]# ss -u
Recv-Q   Send-Q    Local Address:Port   Peer Address:Port 
UNCONN     0      0      *:sunwebadmins                 *:*
[root@localhost ~]# ss -x
Netid    State     Recv-Q    Send-Q    Local Address:Port        Peer Address:Port 
u_str ESTAB 0      0 /tmp/zabbix_server_preprocessing.sock 32255      * 21809

2.6 查看套接字内存使用

使用-m参数可以查看套接字内存使用情况。命令如下:

代码语言:javascript复制
ss -ltm

结果如下:

代码语言:javascript复制
[root@localhost ~]# ss -ltm
State   Recv-Q    Send-Q     Local Address:Port     Peer Address:Port
LISTEN  0      128                 *:http           *:*skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0)
LISTEN  0      100         127.0.0.1:smtp           *:*skmem:(r0,rb87380,t0,tb16384,f0,w0,o0,bl0)

2.7 查看套接字统计信息

使用-s可以对套接字使用情况进行汇总。命令如下:

代码语言:javascript复制
ss -s

结果如下:

代码语言:javascript复制
[root@localhost ~]# ss -s
Total: 14
TCP:   0 (estab 0, closed 0, orphaned 0, timewait 0) 
Transport Total     IP        IPv6
RAW       0         0         0
UDP       1         1         0
TCP       0         0         0
INET      1         1         0
FRAG      0         0         0

2.8 对套接字状态进行过滤

使用ss -t state * 对套接字状态进行过滤,从而只展示需要的套接字状态的套接字信息。*可以用以下状态值进行替换,如:established, syn-sent, syn-recv, fin-wait-1, fin-wait-2, time-wait, closed, closed-wait, last-ack,使用命令如下:

代码语言:javascript复制
ss -t state

已展示established状态为例。执行结果如下:

代码语言:javascript复制
[root@localhost ~]# ss -t state established
Recv-Q    Send-Q     Local Address:Port           Peer Address:Port
0            0     ::ffff:172.28.204.67:http      ::ffff:123.125.71.38:49237

2.9 对端口号进行过滤

使用指定的符号可以根据端口号范围对ss结果进行过滤。支持的标识符为:小于(lt),大于(gt),等于(eq),不等于(ne),小于或等于(le),或大于或等于(ge),以大于为例,命令格式为:

代码语言:javascript复制
ss -ltn sport ne 100

结果如下:

代码语言:javascript复制
[root@localhost ~]# ss -ltn sport ne 100
State    Recv-Q    Send-Q    Local Address:Port   Peer Address:Port
LISTEN      0      128                *:80                     *:*

2.10 显示版本号

通过 -v参数可以查看版本号。命令格式如下:

代码语言:javascript复制
ss -v

运行结果如下:

代码语言:javascript复制
[root@localhost ~]# ss -v
ss utility, iproute2-v5.7.0-77-gb687d1067169

3、总结

本文只对常用ss命令进行了介绍。ss的详细还请自行查阅,如:man ss

0 人点赞