ss 命令简介
1. 简介
ss 使用 netlink 与内核 tcp_diag 模块通信获取 socket 信息,用法和输出结果类似于 netstat 命令
语法格式如下
ss [options] [ FILTER ]
选项说明
选项 | 说明 |
---|---|
-t | tcp 协议相关 |
-u | udp 协议相关 |
-w | 裸套接字相关 |
-x | unix sock 相关 |
-l | listen 状态的连接 |
-a | 所有 |
-n | 数字格式 |
-p | 相关的程序及 PID |
-e | 扩展的信息 |
-m | 内存用量 |
-o | 计时器信息 |
FILTER 过滤器说明
FILTER := [ state TCP-STATE ] [ EXPRESSION ]
其中:
TCP-FILTER:表示 tcp 状态,常见的状态有established, syn-sent, syn-recv, fin-wait-1, fin-wait-2, time-wait, closed, close-wait, last-ack, listening and closing
EXPRESSION 表达式
-
dport =: 表示目标端口,也可以是协议名称
-
sport =: 表示源端口,也可以是协议名称
2. 示例
2.1 显示本端打开的所有端口
[root@centos ~]#ss -l|tail -n3
tcp LISTEN 0 5 0.0.0.0:rsync 0.0.0.0:*
tcp LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*
tcp LISTEN 0 100 127.0.0.1:smtp 0.0.0.0:*
[root@centos ~]#
2.2 显示每个进程具体打开的 socket
[root@centos ~]#ss -pl|tail -n1
tcp LISTEN 0 5 0.0.0.0:rsync 0.0.0.0:* users:(("rsync",pid=1780,fd=3))
2.3 显示所有 TCP Socket
[root@centos ~]#ss -ta
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 5 0.0.0.0:rsync 0.0.0.0:*
LISTEN 0 128 0.0.0.0:ssh 0.0.0.0:*
LISTEN 0 100 127.0.0.1:smtp 0.0.0.0:*
ESTAB 0 0 172.18.0.38:ssh 172.18.0.40:49707
LISTEN 0 5 [::]:rsync [::]:*
LISTEN 0 128 [::]:ssh [::]:*
LISTEN 0 100 [::1]:smtp [::]:*
[root@centos ~]#
2.4 显示所有 UDP Socket
[root@centos ~]#ss -ua
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 172.18.0.38%enp0s3:bootpc 172.18.0.1:bootps
[root@centos ~]#
2.5 显示所有已建立的 ssh 连接
[root@centos ~]#ss -o state established '( dport = :ssh or sport = :ssh )'
Netid Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp 0 0 172.18.0.38:ssh 172.18.0.40:49707 timer:(keepalive,87min,0)
[root@centos ~]#
2.6 显示所有已建立的 HTTP 连接
[root@centos ~]#ss -o state established '( dport = :http or sport = :http )'
Netid Recv-Q Send-Q Local Address:Port Peer Address:Port
[root@centos ~]#
2.7 列出当前 socket 详细信息(生产中常用)
[root@centos ~]#ss -s
Total: 213
TCP: 7 (estab 1, closed 0, orphaned 0, timewait 0)
Transport Total IP IPv6
RAW 1 0 1
UDP 1 1 0
TCP 7 4 3
INET 9 5 4
FRAG 0 0 0
[root@centos ~]#