ss簡介
ss命令可以用來統(tǒng)計(jì)套接字信息勉抓,它支持PACKET套接字、TCP套接字橙弱、UDP套接字、DCCP套接字燥狰、RAW套接字和Unix域套接字等等棘脐。它能像netstat命令那樣輸出統(tǒng)計(jì)信息,與其它工具相比龙致,它支持更多的TCP狀態(tài)蛀缝。在查看TCP連接狀態(tài)方面,ss命令比netstat命令運(yùn)行更快目代,使用起來也很方便快捷屈梁。
ss具有如下特性:
- 能統(tǒng)計(jì)所有TCP套接字信息
- 能統(tǒng)計(jì)所有UDP套接字信息
- 能統(tǒng)計(jì)ssh/ftp/http/https等協(xié)議的連接信息
- 能按照TCP狀態(tài)、IP地址和端口過濾信息
大多數(shù)Linux發(fā)行版都自帶ss以及其它監(jiān)視工具榛了。熟悉這些工具將有助于我們了解系統(tǒng)的套接字狀態(tài)在讶,為我們發(fā)現(xiàn)潛在的性能問題提供有用參考。
ss應(yīng)用舉例
顯示套接字統(tǒng)計(jì)信息
ss -s
樣例輸出:
Total: 108 (kernel 0)
TCP: 9 (estab 1, closed 2, orphaned 0, synrecv 0, timewait 2/0), ports 0
Transport Total IP IPv6
* 0 - -
RAW 0 0 0
UDP 3 2 1
TCP 7 6 1
INET 10 8 2
FRAG 0 0 0
顯示所有打開的端口
ss -l
樣例輸出:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
nl UNCONN 0 0 rtnl:kernel *
nl UNCONN 0 0 tcpdiag:kernel *
nl UNCONN 0 0 7:kernel *
nl UNCONN 0 0 9:kernel *
nl UNCONN 0 0 10:kernel *
nl UNCONN 0 0 11:kernel *
nl UNCONN 0 0 15:kernel *
nl UNCONN 0 0 15:397 *
nl UNCONN 0 0 15:-4117 *
nl UNCONN 0 0 15:408 *
nl UNCONN 0 0 15:-4116 *
如果想看到是哪些進(jìn)程打開了這些端口霜大,可以用如下命令:
ss -pl
顯示所有TCP套接字
ss -t -a
樣例輸出:
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:http *:*
LISTEN 0 128 *:ssh *:*
LISTEN 0 128 127.0.0.1:9181 *:*
LISTEN 0 50 127.0.0.1:3872 *:*
LISTEN 0 128 127.0.0.1:3081 *:*
LISTEN 0 128 :::ssh :::*
顯示所有UDP套接字
ss -u -a
顯示所有RAW套接字
ss -w -a
顯示所有UNIX域套接字
ss -x -a
顯示所有建立的SMTP連接
ss -o state established '( dport = :smtp or sport = :smtp )'
顯示所有建立的HTTP連接
ss -o state established '( dport = :http or sport = :http )'
列出所有處于FIN-WAIT-1狀態(tài)的TCP套接字
ss -o state fin-wait-1 -t
ss相關(guān)問題
如何按照TCP狀態(tài)過濾套接字
語法如下:
## tcp ipv4 ##
ss -4 state tcp-state
## tcp ipv6 ##
ss -6 state tcp-state
上述命令中的tcp-state可以有如下取值:
- established
- syn-sent
- syn-recv
- fin-wait-1
- fin-wait-2
- time-wait
- closed
- close-wait
- last-ack
- listen
- closing
- all:上面所有狀態(tài)
- connected:除了listen和closed之外的所有狀態(tài)
- synchronized:除了syn-sent之外的所有connected狀態(tài)
- bucket:miniSockets維護(hù)的狀態(tài)构哺,也就是time-wait和syn-recv
- big:與bucket狀態(tài)相反
如何匹配遠(yuǎn)程地址和端口
語法如下:
ss dst address_pattern
## examples ##
ss dst 192.168.1.5
ss dst 192.168.1.5:http
ss dst 192.168.1.5:80
如何匹配本地地址和端口
語法如下:
ss src address_pattern
## examples ##
ss src 8.8.8.8
ss src 8.8.8.8:http
ss src 8.8.8.8:80
如何將本地或者遠(yuǎn)程端口和一個(gè)數(shù)作比較
語法如下:
## 比較遠(yuǎn)程端口 ##
ss dport OP port_number
## 比較本地端口 ##
ss sport OP port_number
其中,OP比較操作如下:
- <= 或 le
- >= 或 ge
- == 或 eq
- != 或 ne
- < 或 lt
- > 或 gt
幾個(gè)例子:
## 別忘了轉(zhuǎn)義特殊字符 ##
ss sport == :http
ss dport == :http
ss dport \> :1024
ss sport \> :1024
ss sport \< :32000
ss sport eq :22
ss dport != :22
ss -o 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