|
1 |
| -ss |
2 |
| -=== |
3 |
| - |
4 |
| -获取socket统计信息 |
5 |
| - |
6 |
| -## 补充说明 |
7 |
| - |
8 |
| -**ss命令** 用来显示处于活动状态的套接字信息。ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。 |
9 |
| - |
10 |
| -当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接`cat /proc/net/tcp`,执行速度都会很慢。可能你不会有切身的感受,但请相信我,当服务器维持的连接达到上万个的时候,使用netstat等于浪费 生命,而用ss才是节省时间。 |
11 |
| - |
12 |
| -天下武功唯快不破。ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。当然,如果你的系统中没有tcp_diag,ss也可以正常运行,只是效率会变得稍慢。 |
13 |
| - |
14 |
| -### 语法 |
15 |
| - |
16 |
| -``` |
17 |
| -ss(选项) |
18 |
| -``` |
19 |
| - |
20 |
| -### 选项 |
21 |
| - |
22 |
| -``` |
23 |
| --h:显示帮助信息; |
24 |
| --V:显示指令版本信息; |
25 |
| --n:不解析服务名称,以数字方式显示; |
26 |
| --a:显示所有的套接字; |
27 |
| --l:显示处于监听状态的套接字; |
28 |
| --o:显示计时器信息; |
29 |
| --m:显示套接字的内存使用情况; |
30 |
| --p:显示使用套接字的进程信息; |
31 |
| --i:显示内部的TCP信息; |
32 |
| --4:只显示ipv4的套接字; |
33 |
| --6:只显示ipv6的套接字; |
34 |
| --t:只显示tcp套接字; |
35 |
| --u:只显示udp套接字; |
36 |
| --d:只显示DCCP套接字; |
37 |
| --w:仅显示RAW套接字; |
38 |
| --x:仅显示UNIX域套接字。 |
39 |
| -``` |
40 |
| - |
41 |
| -### 实例 |
42 |
| - |
43 |
| - **显示ICP连接** |
44 |
| - |
45 |
| -``` |
46 |
| -[root@localhost ~]# ss -t -a |
47 |
| -State Recv-Q Send-Q Local Address:Port Peer Address:Port |
48 |
| -LISTEN 0 0 *:3306 *:* |
49 |
| -LISTEN 0 0 *:http *:* |
50 |
| -LISTEN 0 0 *:ssh *:* |
51 |
| -LISTEN 0 0 127.0.0.1:smtp *:* |
52 |
| -ESTAB 0 0 112.124.15.130:42071 42.156.166.25:http |
53 |
| -ESTAB 0 0 112.124.15.130:ssh 121.229.196.235:33398 |
54 |
| -``` |
55 |
| - |
56 |
| - **显示 Sockets 摘要** |
57 |
| - |
58 |
| -``` |
59 |
| -[root@localhost ~]# ss -s |
60 |
| -Total: 172 (kernel 189) |
61 |
| -TCP: 10 (estab 2, closed 4, orphaned 0, synrecv 0, timewait 0/0), ports 5 |
62 |
| -
|
63 |
| -Transport Total ip IPv6 |
64 |
| -* 189 - - |
65 |
| -RAW 0 0 0 |
66 |
| -UDP 5 5 0 |
67 |
| -TCP 6 6 0 |
68 |
| -INET 11 11 0 |
69 |
| -FRAG 0 0 0 |
70 |
| -``` |
71 |
| - |
72 |
| -列出当前的established, closed, orphaned and waiting TCP sockets |
73 |
| - |
74 |
| - **列出所有打开的网络连接端口** |
75 |
| - |
76 |
| -``` |
77 |
| -[root@localhost ~]# ss -l |
78 |
| -Recv-Q Send-Q Local Address:Port Peer Address:Port |
79 |
| -0 0 *:3306 *:* |
80 |
| -0 0 *:http *:* |
81 |
| -0 0 *:ssh *:* |
82 |
| -0 0 127.0.0.1:smtp *:* |
83 |
| -``` |
84 |
| - |
85 |
| - **查看进程使用的socket** |
86 |
| - |
87 |
| -``` |
88 |
| -[root@localhost ~]# ss -pl |
89 |
| -Recv-Q Send-Q Local Address:Port Peer Address:Port |
90 |
| -0 0 *:3306 *:* users:(("mysqld",1718,10)) |
91 |
| -0 0 *:http *:* users:(("nginx",13312,5),("nginx",13333,5)) |
92 |
| -0 0 *:ssh *:* users:(("sshd",1379,3)) |
93 |
| -0 0 127.0.0.1:smtp *:* us |
94 |
| -``` |
95 |
| - |
96 |
| - **找出打开套接字/端口应用程序** |
97 |
| - |
98 |
| -``` |
99 |
| -[root@localhost ~]# ss -pl | grep 3306 |
100 |
| -0 0 *:3306 *:* users:(("mysqld",1718,10)) |
101 |
| -``` |
102 |
| - |
103 |
| - **显示所有UDP Sockets** |
104 |
| - |
105 |
| -``` |
106 |
| -[root@localhost ~]# ss -u -a |
107 |
| -State Recv-Q Send-Q Local Address:Port Peer Address:Port |
108 |
| -UNCONN 0 0 *:syslog *:* |
109 |
| -UNCONN 0 0 112.124.15.130:ntp *:* |
110 |
| -UNCONN 0 0 10.160.7.81:ntp *:* |
111 |
| -UNCONN 0 0 127.0.0.1:ntp *:* |
112 |
| -UNCONN 0 0 *:ntp *:* |
113 |
| -``` |
114 |
| - |
115 |
| - |
116 |
| -<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ --> |
| 1 | +ss |
| 2 | +=== |
| 3 | + |
| 4 | +获取socket统计信息 |
| 5 | + |
| 6 | +## 补充说明 |
| 7 | + |
| 8 | +**ss命令** 用来显示处于活动状态的套接字信息。ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。 |
| 9 | + |
| 10 | +当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接`cat /proc/net/tcp`,执行速度都会很慢。可能你不会有切身的感受,但请相信我,当服务器维持的连接达到上万个的时候,使用netstat等于浪费 生命,而用ss才是节省时间。 |
| 11 | + |
| 12 | +天下武功唯快不破。ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。当然,如果你的系统中没有tcp_diag,ss也可以正常运行,只是效率会变得稍慢。 |
| 13 | + |
| 14 | +### 语法 |
| 15 | + |
| 16 | +``` |
| 17 | +ss [参数] |
| 18 | +ss [参数] [过滤] |
| 19 | +``` |
| 20 | + |
| 21 | +### 选项 |
| 22 | + |
| 23 | +``` |
| 24 | +-h, --help 帮助信息 |
| 25 | +-V, --version 程序版本信息 |
| 26 | +-n, --numeric 不解析服务名称 |
| 27 | +-r, --resolve 解析主机名 |
| 28 | +-a, --all 显示所有套接字(sockets) |
| 29 | +-l, --listening 显示监听状态的套接字(sockets) |
| 30 | +-o, --options 显示计时器信息 |
| 31 | +-e, --extended 显示详细的套接字(sockets)信息 |
| 32 | +-m, --memory 显示套接字(socket)的内存使用情况 |
| 33 | +-p, --processes 显示使用套接字(socket)的进程 |
| 34 | +-i, --info 显示 TCP内部信息 |
| 35 | +-s, --summary 显示套接字(socket)使用概况 |
| 36 | +-4, --ipv4 仅显示IPv4的套接字(sockets) |
| 37 | +-6, --ipv6 仅显示IPv6的套接字(sockets) |
| 38 | +-0, --packet 显示 PACKET 套接字(socket) |
| 39 | +-t, --tcp 仅显示 TCP套接字(sockets) |
| 40 | +-u, --udp 仅显示 UCP套接字(sockets) |
| 41 | +-d, --dccp 仅显示 DCCP套接字(sockets) |
| 42 | +-w, --raw 仅显示 RAW套接字(sockets) |
| 43 | +-x, --unix 仅显示 Unix套接字(sockets) |
| 44 | +-f, --family=FAMILY 显示 FAMILY类型的套接字(sockets),FAMILY可选,支持 unix, inet, inet6, link, netlink |
| 45 | +-A, --query=QUERY, --socket=QUERY |
| 46 | + QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY] |
| 47 | +-D, --diag=FILE 将原始TCP套接字(sockets)信息转储到文件 |
| 48 | + -F, --filter=FILE 从文件中都去过滤器信息 |
| 49 | + FILTER := [ state TCP-STATE ] [ EXPRESSION ] |
| 50 | +``` |
| 51 | + |
| 52 | +### 实例 |
| 53 | + |
| 54 | +``` |
| 55 | +ss -t -a 显示TCP连接 |
| 56 | +ss -s 显示 Sockets 摘要 |
| 57 | +ss -l 列出所有打开的网络连接端口 |
| 58 | +ss -pl 查看进程使用的socket |
| 59 | +ss -lp | grep 3306 找出打开套接字/端口应用程序 |
| 60 | +ss -u -a 显示所有UDP Sockets |
| 61 | +ss -o state established '( dport = :smtp or sport = :smtp )' 显示所有状态为established的SMTP连接 |
| 62 | +ss -o state established '( dport = :http or sport = :http )' 显示所有状态为Established的HTTP连接 |
| 63 | +ss -o state fin-wait-1 '( sport = :http or sport = :https )' dst 193.233.7/24 列举出处于 FIN-WAIT-1状态的源端口为 80或者 443,目标网络为 193.233.7/24所有 tcp套接字 |
| 64 | +
|
| 65 | +# ss 和 netstat 效率对比 |
| 66 | +time netstat -at |
| 67 | +time ss |
| 68 | +
|
| 69 | +# 匹配远程地址和端口号 |
| 70 | +# ss dst ADDRESS_PATTERN |
| 71 | +ss dst 192.168.1.5 |
| 72 | +ss dst 192.168.119.113:http |
| 73 | +ss dst 192.168.119.113:smtp |
| 74 | +ss dst 192.168.119.113:443 |
| 75 | +
|
| 76 | +# 匹配本地地址和端口号 |
| 77 | +# ss src ADDRESS_PATTERN |
| 78 | +ss src 192.168.119.103 |
| 79 | +ss src 192.168.119.103:http |
| 80 | +ss src 192.168.119.103:80 |
| 81 | +ss src 192.168.119.103:smtp |
| 82 | +ss src 192.168.119.103:25 |
| 83 | +``` |
| 84 | + |
| 85 | +**将本地或者远程端口和一个数比较** |
| 86 | + |
| 87 | +``` |
| 88 | +# ss dport OP PORT 远程端口和一个数比较; |
| 89 | +# ss sport OP PORT 本地端口和一个数比较 |
| 90 | +# OP 可以代表以下任意一个: |
| 91 | +# <= or le : 小于或等于端口号 |
| 92 | +# >= or ge : 大于或等于端口号 |
| 93 | +# == or eq : 等于端口号 |
| 94 | +# != or ne : 不等于端口号 |
| 95 | +# < or gt : 小于端口号 |
| 96 | +# > or lt : 大于端口号 |
| 97 | +ss sport = :http |
| 98 | +ss dport = :http |
| 99 | +ss dport \> :1024 |
| 100 | +ss sport \> :1024 |
| 101 | +ss sport \< :32000 |
| 102 | +ss sport eq :22 |
| 103 | +ss dport != :22 |
| 104 | +ss state connected sport = :http |
| 105 | +ss \( sport = :http or sport = :https \) |
| 106 | +ss -o state fin-wait-1 \( sport = :http or sport = :https \) dst 192.168.1/24 |
| 107 | +``` |
| 108 | + |
| 109 | +**用TCP 状态过滤Sockets** |
| 110 | + |
| 111 | +``` |
| 112 | +ss -4 state closing |
| 113 | +# ss -4 state FILTER-NAME-HERE |
| 114 | +# ss -6 state FILTER-NAME-HERE |
| 115 | +# FILTER-NAME-HERE 可以代表以下任何一个: |
| 116 | +# established、 syn-sent、 syn-recv、 fin-wait-1、 fin-wait-2、 time-wait、 closed、 close-wait、 last-ack、 listen、 closing、 |
| 117 | +# all : 所有以上状态 |
| 118 | +# connected : 除了listen and closed的所有状态 |
| 119 | +# synchronized :所有已连接的状态除了syn-sent |
| 120 | +# bucket : 显示状态为maintained as minisockets,如:time-wait和syn-recv. |
| 121 | +# big : 和bucket相反. |
| 122 | +``` |
| 123 | + |
| 124 | + **显示ICP连接** |
| 125 | + |
| 126 | +``` |
| 127 | +[root@localhost ~]# ss -t -a |
| 128 | +State Recv-Q Send-Q Local Address:Port Peer Address:Port |
| 129 | +LISTEN 0 0 *:3306 *:* |
| 130 | +LISTEN 0 0 *:http *:* |
| 131 | +LISTEN 0 0 *:ssh *:* |
| 132 | +LISTEN 0 0 127.0.0.1:smtp *:* |
| 133 | +ESTAB 0 0 112.124.15.130:42071 42.156.166.25:http |
| 134 | +ESTAB 0 0 112.124.15.130:ssh 121.229.196.235:33398 |
| 135 | +``` |
| 136 | + |
| 137 | + **显示 Sockets 摘要** |
| 138 | + |
| 139 | +``` |
| 140 | +[root@localhost ~]# ss -s |
| 141 | +Total: 172 (kernel 189) |
| 142 | +TCP: 10 (estab 2, closed 4, orphaned 0, synrecv 0, timewait 0/0), ports 5 |
| 143 | +
|
| 144 | +Transport Total ip IPv6 |
| 145 | +* 189 - - |
| 146 | +RAW 0 0 0 |
| 147 | +UDP 5 5 0 |
| 148 | +TCP 6 6 0 |
| 149 | +INET 11 11 0 |
| 150 | +FRAG 0 0 0 |
| 151 | +``` |
| 152 | + |
| 153 | +列出当前的established, closed, orphaned and waiting TCP sockets |
| 154 | + |
| 155 | + **列出所有打开的网络连接端口** |
| 156 | + |
| 157 | +``` |
| 158 | +[root@localhost ~]# ss -l |
| 159 | +Recv-Q Send-Q Local Address:Port Peer Address:Port |
| 160 | +0 0 *:3306 *:* |
| 161 | +0 0 *:http *:* |
| 162 | +0 0 *:ssh *:* |
| 163 | +0 0 127.0.0.1:smtp *:* |
| 164 | +``` |
| 165 | + |
| 166 | + **查看进程使用的socket** |
| 167 | + |
| 168 | +``` |
| 169 | +[root@localhost ~]# ss -pl |
| 170 | +Recv-Q Send-Q Local Address:Port Peer Address:Port |
| 171 | +0 0 *:3306 *:* users:(("mysqld",1718,10)) |
| 172 | +0 0 *:http *:* users:(("nginx",13312,5),("nginx",13333,5)) |
| 173 | +0 0 *:ssh *:* users:(("sshd",1379,3)) |
| 174 | +0 0 127.0.0.1:smtp *:* us |
| 175 | +``` |
| 176 | + |
| 177 | + **找出打开套接字/端口应用程序** |
| 178 | + |
| 179 | +``` |
| 180 | +[root@localhost ~]# ss -pl | grep 3306 |
| 181 | +0 0 *:3306 *:* users:(("mysqld",1718,10)) |
| 182 | +``` |
| 183 | + |
| 184 | + **显示所有UDP Sockets** |
| 185 | + |
| 186 | +``` |
| 187 | +[root@localhost ~]# ss -u -a |
| 188 | +State Recv-Q Send-Q Local Address:Port Peer Address:Port |
| 189 | +UNCONN 0 0 *:syslog *:* |
| 190 | +UNCONN 0 0 112.124.15.130:ntp *:* |
| 191 | +UNCONN 0 0 10.160.7.81:ntp *:* |
| 192 | +UNCONN 0 0 127.0.0.1:ntp *:* |
| 193 | +UNCONN 0 0 *:ntp *:* |
| 194 | +``` |
| 195 | + |
| 196 | + |
| 197 | +<!-- Linux命令行搜索引擎:https://jaywcjlove.github.io/linux-command/ --> |
0 commit comments