你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Linuxss命令——显示socket状态

[复制链接]
gaosmile 发布时间:2020-11-11 19:03
ss命令用于显示socket状态. 他可以显示PACKET sockets, TCP sockets, UDP sockets, DCCP sockets, RAW sockets, Unix domain sockets等等统计. 它比其他工具展示等多tcp和state信息. 它是一个非常实用、快速、有效的跟踪IP连接和sockets的新工具.SS命令可以提供如下信息:

0 J+ d1 r% T# r, a% N3 J, e: e
  • 所有的TCP sockets
  • 所有的UDP sockets
  • 所有ssh/ftp/ttp/https持久连接
  • 所有连接到Xserver的本地进程
  • 使用state(例如:connected, synchronized, SYN-RECV, SYN-SENT,TIME-WAIT)、地址、端口过滤
  • 所有的state FIN-WAIT-1 tcpsocket连接以及更多
    / J4 g1 t& \1 B) V2 m
2 W& C  j; e* P( m* P0 i  I
很多流行的Linux发行版都支持ss以及很多监控工具使用ss命令.熟悉这个工具有助于您更好的发现与解决系统性能问题.本人强烈建议使用ss命令替代netstat部分命令,例如netsat -ant/lnt等.

. G& b1 v+ x; P8 H0 B6 n
展示他之前来做个对比,统计服务器并发连接数
  1. . }7 P$ y4 n4 _
  2. netstat
    ( b+ z" I1 S4 x* s( k6 R& r
  3. # time netstat -ant | grep EST | wc -l& o4 ?$ [% b+ Y2 {
  4. 31005 S( \! i8 m4 ^7 {4 r, X

  5. / M3 @4 m) c/ B" A& }0 ~  Q- D
  6. real 0m12.960s! A6 \/ g- H( a# _2 v. Z
  7. user 0m0.334s4 A% T, B' h' r5 b& n
  8. sys 0m12.561s
    + j; G; M/ c4 ?/ {& E2 O
  9. # time ss -o state established | wc -l/ f" }( ]1 X3 n, l) l9 m
  10. 3204- T0 T7 _! r( _* Y* F2 ~

  11. 8 i& d1 c( Y/ @. E" _
  12. real 0m0.030s. `. z9 F4 q2 }- U3 R  L
  13. user 0m0.005s6 J. u* h' B# g1 T2 M+ Z* s+ r
  14. sys 0m0.026s
复制代码
' X$ C7 S; k$ y: P: V
结果很明显ss统计并发连接数效率完胜netstat,在ss能搞定的情况下, 你还会在选择netstat吗, 还在犹豫吗, 看以下例子,或者跳转到帮助页面.

. O/ F. e. i3 ?. B2 G- x  U$ p+ Y/ J
常用ss命令:

  1. ! @; E8 N9 E( J; s2 k
  2. ss -l 显示本地打开的所有端口
      t$ K5 F1 O" c$ s8 O
  3. ss -pl 显示每个进程具体打开的socket
    & T- {: Q* f( b7 l! s2 M
  4. ss -t -a 显示所有tcp socket- w$ D, r9 P+ ]- N' j# B
  5. ss -u -a 显示所有的UDP Socekt! |; D% ^0 ]1 F% W
  6. ss -o state established '( dport = :smtp or sport = :smtp )' 显示所有已建立的SMTP连接
      @5 d# p3 l8 c6 E9 u
  7. ss -o state established '( dport = :http or sport = :http )' 显示所有已建立的HTTP连接
    8 B; h! J' U/ g* I* I  q
  8. ss -x src /tmp/.X11-unix/* 找出所有连接X服务器的进程
    , N3 G+ a9 a: o6 K% T( T
  9. ss -s 列出当前socket详细信息:
复制代码

% c2 [9 p; f7 l, ?: N2 b' y
显示sockets简要信息,列出当前已经连接,关闭,等待的tcp连接
  1. % i6 J7 B8 N. T' T7 `
  2. # ss -s9 }, n8 }3 Q( U" j. T* Q
  3. Total: 3519 (kernel 3691)
    5 K& {' z; z3 o- [* l9 @* c4 X6 x
  4. TCP: 26557 (estab 3163, closed 23182, orphaned 194, synrecv 0, timewait 23182/0), ports 1452
    # [& g; Z0 L/ r2 y! A7 Q

  5. - B# g; X8 j. j5 |9 l. t* }* ~4 U
  6. Transport Total IP IPv6" {9 U2 h: }; a) U0 j
  7. * 3691 - -
      z' ?) c. z  ^' ]$ y1 z
  8. RAW 2 2 0+ @: ]4 Y/ Y3 @+ {8 ]4 S" X
  9. UDP 10 7 3
    2 e, X# {  c% {  E' Q! l
  10. TCP 3375 3368 7
    : C' a- C( J: L
  11. INET 3387 3377 10- X! Y0 l9 y; f7 J* N
  12. FRAG 0 0 0
复制代码

3 ?3 ?1 O1 `# p' l
列出当前监听端口

  1. / k: ^" F& O) c! G* m% \
  2. # ss -lRecv-Q Send-Q Local Address:Port Peer Address:Port
    ; f  K5 x# x; k" v
  3. 0 10 :::5989 :::*
    $ V; b5 n6 X5 g4 {- I% u3 y
  4. 0 5 *:rsync *:*0 l+ I$ a7 U2 d
  5. 0 128 :::sunrpc :::*
    ' |2 ^, x& b4 W3 ~" c4 F  V
  6. 0 128 *:sunrpc *:*5 P$ O) [6 V5 G. G. l
  7. 0 511 *:http *:*) ~9 m% }: c3 l; @1 j
  8. 0 128 :::ssh :::*
    ) I1 i& @) j7 c! ^! ~
  9. 0 128 *:ssh *:*  U) ?: n8 j6 I: P; Z3 X
  10. 0 128 :::35766 :::*4 X6 k2 F  r/ q3 B4 Y7 k9 @
  11. 0 128 127.0.0.1:ipp *:** `2 o5 C; a- Y2 o) [) W
  12. 0 128 ::1:ipp :::*+ ]+ m) a" Z7 |
  13. 0 100 ::1:smtp :::*% P/ X2 |: \- v/ p
  14. 0 100 127.0.0.1:smtp *:*
    ) M# j" M/ |; s" G- j
  15. 0 511 *:https *:*5 Z6 H7 S# J2 q5 F3 X
  16. 0 100 :::1311 :::*
    ) H( k3 R% c" [( T& M8 ^1 m, k& }
  17. 0 5 *:5666 *:*
    2 G5 C5 n$ ]+ f& y- \$ k7 A
  18. 0 128 *:3044 *:*
复制代码
$ r, C* E. o, p8 S! ~# _
ss列出每个进程名及其监听的端口

$ p) x; G, Q0 n5 N7 U
  • # ss -pl, e+ v7 L9 p  _5 V

& t0 x) U: [! A. ^8 v
4 G3 X* b  p# F3 h6 ]  ?' c  n
ss列所有的tcp sockets
* Z1 d: H8 W! m* C% F
  • # ss -t -a# Z5 G6 y0 l& r6 O. t7 U: N
7 d) ?1 t( W  F5 s  J0 H

% x) `. r+ {9 s) W# D1 L
ss列出所有udp sockets

9 t/ J: r8 _7 Q
  • # ss -u -a
    & ?. ~. W; ~/ d4 Y4 R* s; Z

& v2 h$ {# i4 V/ I  P: `+ S
" Z" s+ z/ z) Y4 C& K8 j2 T
ss列出所有http连接中的连接
7 f# u7 a# O4 C& C) i+ n+ g2 h
  • # ss -o state established '( dport = :http or sport = :http )'2 D) c! J* Z9 a5 F3 S( ^6 I+ [

% g. X3 y( K  w' i
·以上包含对外提供的80,以及访问外部的80
·用以上命令完美的替代netstat获取http并发连接数,监控中常用到
) C; A6 n4 ~% ]! Y4 m: \% W# l, f% d
ss列出本地哪个进程连接到x server
2 L* a* W  Z- t0 u* ^0 ^
  • # ss -x src /tmp/.X11-unix/*( y7 I4 J/ {& a

' l1 d! r$ {) B$ H7 h! t

1 Z5 O: A' R4 J! `
ss列出处在FIN-WAIT-1状态的http、https连接
7 m1 Q" |. ?4 s! w3 }2 J3 W
  • # ss -o state fin-wait-1 '( sport = :http or sport = :https )'' W$ F/ ]  p. p+ M  T- `1 Q

+ S2 c; t+ {) \  |' l/ @3 F
2 \5 Z# I0 ?4 v
ss常用的state状态:
  1. # d  p8 R. e5 \5 \% g4 a" S& M
  2. established$ {/ K1 e5 q1 H& J1 \& z4 R, W1 e
  3. syn-sent
    ; c( H* T7 n0 h4 C+ t. d
  4. syn-recv
    7 F9 d1 {2 \. n0 C9 m$ ^- g/ m
  5. fin-wait-1; h# Y. D" R8 y; Y% z
  6. fin-wait-2
    & v& i8 T; q( q3 _8 r+ A
  7. time-wait
    ( L- V4 W5 E6 {( a* z: Y# b
  8. closed
    1 o( f% q- Q2 [% j7 P
  9. close-wait
    ( i7 F3 E+ F+ P1 Y" M
  10. last-ack
    + O3 x) h* E2 {, B2 W) R* I
  11. listen
    7 L) D" e$ W3 y4 C) I6 V$ {
  12. closing
    7 v1 q& ?5 K. o6 M3 y
  13. all : All of the above states! @- }. Y: p7 `$ L2 }
  14. connected : All the states except for listen and closed! N! \# V; d! g3 ^5 Z
  15. synchronized : All the connected states except for syn-sent
    , m8 D- T! N8 N+ c
  16. bucket : Show states, which are maintained as minisockets, i.e. time-wait and syn-recv.
    & R$ Y/ y+ S  i" v. p6 V0 L
  17. big : Opposite to bucket state.
复制代码

5 j0 g- |$ B- a/ v' G4 V2 `
ss使用IP地址筛选

  1. . `8 P* A0 B+ P" \& T' ~
  2. ss src ADDRESS_PATTERN
    8 B5 P' I6 m. Q. y1 p7 P
  3. src:表示来源
    , G4 D6 ]0 q. @  w
  4. ADDRESS_PATTERN:表示地址规则6 W2 b3 ~* t% P9 c8 {, `
  5. 如下:
    ( |) p1 |: }, b, I: _) b+ Z
  6. ss src 120.33.31.1 # 列出来之20.33.31.1的连接7 c0 i% Q7 j* L( u2 t
  7. ) W( s4 Q7 V4 w4 ]
  8. # 列出来至120.33.31.1,80端口的连接/ {" Z$ O0 ]) `3 f: D; `+ l8 n
  9. ss src 120.33.31.1:http4 p: t/ c- H; V" r; H  \" }
  10. ss src 120.33.31.1:8
复制代码

* F6 E5 m! ?9 G0 Z$ S
ss使用端口筛选

  1. % P& S+ ~, L; p$ ~/ T- I- G* e3 {
  2. ss dport OP PORT5 j2 m" ~" U3 i6 ]9 i! e
  3. OP:是运算符- p( A8 O' b6 U8 M" m/ g! V
  4. PORT:表示端口
    7 o' j& A% u0 g, t& G
  5. dport:表示过滤目标端口、相反的有sport
复制代码

. o. n' R  I; k5 o
OP运算符如下:
  1. , v6 _  L- [9 A6 B
  2. <= or le : 小于等于 >= or ge : 大于等于
    * n: S) Q5 R9 E
  3. == or eq : 等于
    , e/ Q! a* T7 u2 N1 N
  4. != or ne : 不等于端口
    * b/ N5 |3 a* x& d' ~
  5. < or lt : 小于这个端口 > or gt : 大于端口
复制代码
3 ?/ B2 o* L# u
OP实例

  1.   V3 ]! Q" A- U' h
  2. ss sport = :http 也可以是 ss sport = :80
    7 [% E, _9 C2 g& o7 m
  3. ss dport = :http$ `7 f$ M5 }/ w4 G% \( g! G* B
  4. ss dport \> :1024! ]' {1 \3 O. o3 S( V
  5. ss sport \> :1024
    % M  g* u" Q' m9 @5 }3 t$ p  R  l
  6. ss sport \< :32000
    1 F( ?8 ~5 Q+ F  f3 T7 U; k
  7. ss sport eq :229 r8 _9 y: \) N5 [! f- [/ x* v
  8. ss dport != :222 Y( X1 k" N7 m) f$ S& z
  9. ss state connected sport = :http5 O0 x# D6 F5 B8 E) N0 e
  10. ss \( sport = :http or sport = :https \)
    0 m3 X6 R3 v( G5 E
  11. ss -o state fin-wait-1 \( sport = :http or sport = :https \) dst 192.168.1/24
复制代码

' @8 X1 U5 V( ~1 o6 E! v; E3 i. [
为什么ss比netstat快:
netstat是遍历/proc下面每个PID目录,ss直接读/proc/net下面的统计信息。所以ss执行的时候消耗资源以及消耗的时间都比netstat少很多
2 p: a0 z& c- K: M1 X3 d" E
ss命令帮助

  1. 3 ?6 l2 d: }$ A  I
  2. # ss -h+ y/ O0 y' Y; c# Q1 U
  3. Usage: ss [ OPTIONS ]
    & c4 B. I+ r/ Z8 O% z0 W0 i
  4.        ss [ OPTIONS ] [ FILTER ]( J( r+ g7 W7 i
  5.    -h, --help           this message% h3 {% ~5 y5 o; S1 C3 z" J7 U
  6.    -V, --version        output version information- X1 f( @- v) z) ~$ Y7 z1 F
  7.    -n, --numeric        don't resolve service names8 _+ A" F3 Q( X5 C9 B( e( k. s( H
  8.    -r, --resolve       resolve host names
    , U6 F  u( h6 C3 W. m: v
  9.    -a, --all            display all sockets* t$ b: D/ b2 }9 p9 j( A
  10.    -l, --listening      display listening sockets
    8 X# D, D, `2 s7 e" E* S9 l
  11.    -o, --options       show timer information, R( E$ U" v1 v- J9 M
  12.    -e, --extended      show detailed socket information% z* {0 `' X8 |; F6 k& l% X3 C) T
  13.    -m, --memory        show socket memory usage. E  H' Z7 c8 d9 }) [4 q5 g" h
  14.    -p, --processes      show process using socket8 S# a* A) |" \7 Y! ?
  15.    -i, --info           show internal TCP information
    5 \" W! n- M2 k
  16.    -s, --summary        show socket usage summary
    ! x" D, W9 `1 y" @
  17.    -4, --ipv4          display only IP version 4 sockets
    3 K$ y# T" D% y3 q; s$ e
  18.    -6, --ipv6          display only IP version 6 sockets
    : Q) A0 K8 T6 Y+ O
  19.    -0, --packet display PACKET sockets/ s, |! z0 i2 R
  20.    -t, --tcp            display only TCP sockets  ^  w# t* Y. p) B! k$ O( H
  21.    -u, --udp            display only UDP sockets
    8 u# T8 r6 v- K  w. u
  22.    -d, --dccp           display only DCCP sockets6 F" p4 h( [; U. u: Z: j4 D5 d
  23.    -w, --raw            display only RAW sockets# t  \7 X* n, W, v6 \2 D( P
  24.    -x, --unix           display only Unix domain sockets
    % n- j3 C  U0 f8 |& c  h' A
  25.    -f, --family=FAMILY display sockets of type FAMILY
    2 F) o4 y1 B& y8 I6 n2 ~
  26.    -A, --query=QUERY, --socket=QUERY! ~6 I9 V' s+ X- w( t6 K$ r( Y
  27.        QUERY := {all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]
    ' b+ u! S2 |3 R' S1 R
  28.    -D, --diag=FILE      Dump raw information about TCP sockets to FILE
    7 u2 \" P& u2 F$ q1 @
  29.    -F, --filter=FILE   read filter information from FILE1 |+ l) o9 @4 A) ]+ ]7 e* A( Z- N
  30.        FILTER := [ state TCP-STATE ] [ EXPRESSION ]
复制代码
$ i! s* i  s/ h% [# @- u
赞 收藏 评论0 发布时间:2020-11-11 19:03

举报

0个回答
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版