Skip to content

Commit a34ec2b

Browse files
authored
ss命令添加实例
1 parent 6d6040d commit a34ec2b

File tree

1 file changed

+197
-116
lines changed

1 file changed

+197
-116
lines changed

command/ss.md

Lines changed: 197 additions & 116 deletions
Original file line numberDiff line numberDiff line change
@@ -1,116 +1,197 @@
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

Comments
 (0)