前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >有了ss工具就可以丢掉netstat了

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

作者头像
CPP开发前沿
发布2021-12-13 17:51:07
9620
发布2021-12-13 17:51:07
举报
文章被收录于专栏:CPP开发前沿CPP开发前沿

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-12-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CPP开发前沿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档