1. 程式人生 > >記錄Linux命令(20180424)-ss命令

記錄Linux命令(20180424)-ss命令

對比 獲取 rss nat source dst iso 記錄 closed

ss 是 socket statistics 的縮寫。顧名思義,ss 命令可以用來獲取socket 統計信息,它可以顯示和netstat 類似的內容。但 ss 的優勢在於它能夠顯示更多更詳細的有關TCP和連接狀態的信息,而且比netstat更快速更高效。

當服務器的socket連接數量變得非常大時,無論是使用netstat命令還是 cat /proc/net/tcp,執行速度都會很慢。可能你不會有切身的感受,但請相信我,當服務器維持的連接達到上萬個的時候,使用 netstat 等於浪費生命,而用 ss才是 節省時間。

  天下武功唯快不破。ss快的秘訣在於,他利用了TCP協議棧中 tcp_diag. tcp_diag 是一個用於分析統計的模塊,可以獲得Linux 內核中第一手的信息,這就確保了ss的快捷高效。當然,如果你的系統中沒有 tcp_diag,ss也可以正常運行,只是效率會變得稍慢。(但仍然比 netstat 要快。)

使用實例:

  實例1:顯示TCP連接

  命令:ss  -t -a

  實例2:顯示 sockets 摘要

  命令:  ss -s

    列出當前的established、 closed、 orphaned and waiting TCP sockets

  實例3:

    ss -l

  實例4:查看進程使用的socket

  命令:

    ss -pl

  實例5:找出打開套接字/端口應用程序

  命令:

    ss -lp | grep 3306

  實例6:顯示所有UDP sockets

  命令:

    ss -u -a

  實例7:顯示所有狀態為 established 的 SMTP 連接

  命令:

    ss -o  state established `( dport =: smtp or sport = : smtp )`

  實例8:顯示所有狀態為 Established 的 HTTP 連接

  命令:

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

  實例9:列舉出處於 FIN-WAIT-1 狀態的源端口為 80 或者 443, 目標網絡為 192.168.1 /24 的所有 tcp 套接字

  命令:  

    ss -o state fin-wait-1 `( sport = :http or sport = :https)` dst 192.168.1/24

  實例10:用TCP 狀態過濾 sockets:

  命令:

    ss -4 state FILTER-NAME-HERE

    ss -6 state FILTER-NAME-HERE

  FILTER-NAME-HERE 可以代表以下任何一個

  established

  syn-sent

  syn-recv

  fin-wait-1

  fin-wait-2

  time-wait

  closed

  close-wait

  last-ack

  listen

  closing

  all 所有以上狀態

  connected 除了listen and closed 的所有狀態

  synchronized   所有已連接的狀態除了 syn-sent

  bucket  顯示狀態為 maintained as minisockets, 如 time-wait 和 syn-recv.

  big  和bucket 相反

  實例11:匹配遠程地址和端口號

  命令:

    ss dst ADDERSS_PATTERN

    ss dst 192.168.1.1

    ss dst 192.168.1.1:8080

  實例12:匹配本地地址和端口號

  命令: 

    ss  src ADDRESS_PATTERN

    ss  src 192.168.1.1

    ss  src 192.168.1.1:80

  實例13:將本地或者遠程端口和一個數比較  

  命令:

    ss  dport  OP  PORT  遠程端口和一個數比較; destination port

    ss  sport  OP  PORT  本地端口和一個數比較; source port

    OP--OPTION:

    <= or le,  >= or ge,  == or eq,

    != or ne  < or gt   > or lt

  實例14: ss 和 netstat 效率對比

  命令:

     time netstat -at

     time ss

  用 time 命令分別獲取通過netstat 和 ss 命令獲取程序占用資源所使用的時間。在服務器連接數比較多的時候,netstat 的效率完全沒法和 ss 比。

原文出自:https://www.cnblogs.com/aaronax/p/5664719.html

記錄Linux命令(20180424)-ss命令