共計 4435 個字符,預計需要花費 12 分鐘才能閱讀完成。
這篇文章將為大家詳細講解有關 Linux 網絡狀態工具 ss 命令怎么用,丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
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 等.
展示他之前來做個對比, 統計服務器并發連接數
eal 0m12.960s user 0m0.334s sys 0m12.561s # time ss -o state established | wc -l 3204 real 0m0.030s user 0m0.005s sys 0m0.026s netstat # time netstat -ant | grep EST | wc -l 3100 r
結果很明顯 ss 統計并發連接數效率完勝 netstat, 在 ss 能搞定的情況下, 你還會在選擇 netstat 嗎, 還在猶豫嗎, 看以下例子, 或者跳轉到幫助頁面.
常用 ss 命令:
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 連接
# ss -s Total: 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 0 UDP 10 7 3 TCP 3375 3368 7 INET 3387 3377 10 FRAG 0 0 0
列出當前監聽端口
# ss -lRecv-Q Send-Q Local Address:Port Peer Address:Port 0 10 :::5989 :::* 0 5 *:rsync *:* 0 128 :::sunrpc :::* 0 128 *:sunrpc *:* 0 511 * 2: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 列出每個進程名及其監聽的端口
# ss -pl
ss 列所有的 tcp sockets
# ss -t -a
ss 列出所有 udp sockets
# ss -u -a
ss 列出所有 http 連接中的連接
# ss -o state established ( dport = :http or sport = :http )
middot; 以上包含對外提供的 80,以及訪問外部的 80
middot; 用以上命令完美的替代 netstat 獲取 http 并發連接數,監控中常用到
ss 列出本地哪個進程連接到 x server
# ss -x src /tmp/.X11-unix/*
ss 列出處在 FIN-WAIT- 1 狀態的 http、https 連接
# ss -o state fin-wait-1 ( sport = :http or sport = :https )
ss 常用的 state 狀態:
established syn-sent syn-recv fin-wait-1 fin-wait-2 time-wait closed close-wait last-ack listen closing all : All of the above states connected : All the states except for listen and closed synchronized : All the connected states except for syn-sent bucket : Show states, which are maintained as minisockets, i.e. time-wait and syn-recv. big : Opposite to bucket state.
ss 使用 IP 地址篩選
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:8
ss 使用端口篩選
ss dport OP PORT OP: 是運算符 PORT:表示端口 dport:表示過濾目標端口、相反的有 sport
OP 運算符如下:
= or le : 小于等于 = or ge : 大于等于 == or eq : 等于 != or ne : 不等于端口 or lt : 小于這個端口 or gt : 大于端口
OP 實例
ss sport = :http 也可以是 ss sport = :80 ss dport = :http ss dport \ :1024 ss sport \ :1024 ss sport \ :32000 ss sport eq :22 ss dport != :22 ss state connected sport = :http ss \( 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 命令幫助
# 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 ]
關于“Linux 網絡狀態工具 ss 命令怎么用”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。