您的位置:首页 > 理论基础 > 计算机网络

Linux网络状态工具ss命令使用详解

2014-05-06 11:33 1361 查看
ss命令用于显示socket状态. 他可以显示PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix domain sockets等等统计. 它比其他工具展示等多tcp和state信息. 它是一个非常实用、快速、有效的跟踪IP连接和sockets的新工具.SS命令可以提供如下信息:

所有的TCP sockets
所有的UDP sockets
所有ssh/ftp/ttp/https持久连接
所有连接到Xserver的本地进程
使用state(例如:connected, synchronized, SYN-RECV, SYN-SENT,TIME-WAIT)、地址、端口过滤
所有的state FIN-WAIT-1 tcpsocket连接以及更多

很多流行的Linux发行版都支持ss以及很多监控工具使用ss命令.熟悉这个工具有助于您更好的发现与解决系统性能问题.本人强烈建议使用ss命令替代netstat部分命令,例如netsat -ant/lnt等.

展示他之前来做个对比,统计服务器并发连接数

12345678910111213netstat# time netstat -ant | grep EST | wc -l3100 real 0m12.960suser 0m0.334ssys 0m12.561s# time ss -o state established | wc -l3204 real 0m0.030suser 0m0.005ssys 0m0.026s
结果很明显ss统计并发连接数效率完败netstat,在ss能搞定的情况下, 你还会在选择netstat吗, 还在犹豫吗, 看以下例子,或者跳转到帮助页面.常用ss命令:

1

2

3

4

5

6

7

8

ss
-l
显示本地打开的所有端口

ss
-pl
显示每个进程具体打开的socket

ss
-t
-a
显示所有tcp
socket

ss
-u
-a
显示所有的UDP
Socekt

ss
-o
state
established
'( dport = :smtp or sport = :smtp )'
显示所有已建立的SMTP连接

ss
-o
state
established
'( dport = :http or sport = :http )'
显示所有已建立的HTTP连接

ss
-x
src
/tmp/.X11-unix/*
找出所有连接X服务器的进程

ss
-s
列出当前socket详细信息:

显示sockets简要信息

列出当前已经连接,关闭,等待的tcp连接

1234567891011# ss -sTotal: 3519 (kernel 3691)TCP: 26557 (estab 3163, closed 23182, orphaned 194, synrecv 0, timewait 23182/0), ports 1452 Transport Total IP IPv6* 3691 - -RAW 2 2 0UDP 10 7 3TCP 3375 3368 7INET 3387 3377 10FRAG 0 0 0
列出当前监听端口

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

# ss -l

Recv-Q
Send-Q
Local
Address:Port
Peer
Address:Port

0
10
:::5989
:::*

0
5
*:rsync
*:*

0
128
:::sunrpc
:::*

0
128
*:sunrpc
*:*

0
511
*:http
*:*

0
128
:::ssh
:::*

0
128
*:ssh
*:*

0
128
:::35766
:::*

0
128
127.0.0.1:ipp
*:*

0
128
::1:ipp
:::*

0
100
::1:smtp
:::*

0
100
127.0.0.1:smtp
*:*

0
511
*:https
*:*

0
100
:::1311
:::*

0
5
*:5666
*:*

0
128
*:3044
*:*

ss列出每个进程名及其监听的端口

1# ss -pl
ss列所有的tcp sockets

1

# ss -t -a

ss列出所有udp sockets

1# ss -u -a
ss列出所有http连接中的连接

1

# ss -o state established '( dport = :http or sport = :http
)'

·以上包含对外提供的80,以及访问外部的80

·用以上命令完美的替代netstat获取http并发连接数,监控中常用到

ss列出本地哪个进程连接到x server

1# ss -x src /tmp/.X11-unix/*
ss列出处在FIN-WAIT-1状态的http、https连接

1

# ss -o state fin-wait-1 '( sport = :http or sport = :https
)'

ss常用的state状态

12345678910111213141516establishedsyn-sentsyn-recvfin-wait-1fin-wait-2time-waitclosedclose-waitlast-acklistenclosingall : All of the above statesconnected : All the states except for listen and closedsynchronized : All the connected states except for syn-sentbucket : Show states, which are maintained as minisockets, i.e. time-wait and syn-recv.big : Opposite to bucket state.
ss使用IP地址筛选

1

2

3

4

5

6

7

8

9

10

ss
src
ADDRESS_PATTERN

src:表示来源

ADDRESS_PATTERN:表示地址规则

如下:

ss
src
120.33.31.1
# 列出来之20.33.31.1的连接

# 列出来至120.33.31.1,80端口的连接

ss
src
120.33.31.1:http

ss
src
120.33.31.1:80

ss使用端口筛选

1234ss dport OP PORTOP:是运算符PORT:表示端口dport:表示过滤目标端口、相反的有sport
OP运算符如下:

1

2

3

4

<=
or
le
:
小于等于
>=
or
ge
:
大于等于

==
or
eq
:
等于

!=
or
ne
:
不等于端口

<
or
lt
:
小于这个端口
>
or
gt
:
大于端口

OP实例

12345678910ss sport = :http 也可以是 ss sport = :80ss dport = :httpss dport \> :1024ss sport \> :1024ss sport \< :32000ss sport eq :22ss dport != :22ss state connected sport = :httpss \( sport = :http or sport = :https \)ss -o state fin-wait-1 \( sport = :http or sport = :https \) dst 192.168.1/24
为什么ss比netstat快:netstat是遍历/proc下面每个PID目录,ss直接读/proc/net下面的统计信息。所以ss执行的时候消耗资源以及消耗的时间都比netstat少很多ss命令帮助

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

# ss -h

Usage:
ss
[
OPTIONS
]

ss
[
OPTIONS
]
[
FILTER
]

-h,
--help
this
message

-V,
--version
output
version
information

-n,
--numeric
don't
resolve
service
names

-r,
--resolve
resolve
host
names

-a,
--all
display
all
sockets

-l,
--listening
display
listening
sockets

-o,
--options
show
timer
information

-e,
--extended
show
detailed
socket
information

-m,
--memory
show
socket
memory
usage

-p,
--processes
show
process
using
socket

-i,
--info
show
internal
TCP
information

-s,
--summary
show
socket
usage
summary

-4,
--ipv4
display
only
IP
version
4
sockets

-6,
--ipv6
display
only
IP
version
6
sockets

-0,
--packet
display
PACKET
sockets

-t,
--tcp
display
only
TCP
sockets

-u,
--udp
display
only
UDP
sockets

-d,
--dccp
display
only
DCCP
sockets

-w,
--raw
display
only
RAW
sockets

-x,
--unix
display
only
Unix
domain
sockets

-f,
--family=FAMILY
display
sockets
of
type
FAMILY

-A,
--query=QUERY,
--socket=QUERY

QUERY
:=
{all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]

-D,
--diag=FILE
Dump
raw
information
about
TCP
sockets
to
FILE

-F,
--filter=FILE
read
filter
information
from
FILE

FILTER
:=
[
state
TCP-STATE
]
[
EXPRESSION
]

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: