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等.
java socket連接。展示他之前來做個對比,統計服務器并發連接數
結果很明顯ss統計并發連接數效率完敗netstat,在ss能搞定的情況下, 你還會在選擇netstat嗎, 還在猶豫嗎, 看以下例子,或者跳轉到幫助頁面.
常用ss命令:
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服務器的進程 |
websocket服務器端,顯示sockets簡要信息
列出當前已經連接,關閉,等待的tcp連接
Total: 3519 (kernel 3691) |
TCP: 26557 (estab 3163, closed 23182, orphaned 194, synrecv 0, timewait 23182/0), ports 1452 |
列出當前監聽端口
Recv-Q Send-Q Local Address:Port Peer Address:Port |
ss列出每個進程名及其監聽的端口
SOL_SOCKET,ss列所有的tcp sockets
ss列出所有udp sockets
ss列出所有http連接中的連接
socket operation on non-socket?·以上包含對外提供的80,以及訪問外部的80
·用以上命令完美的替代netstat獲取http并發連接數,監控中常用到
ss列出本地哪個進程連接到x server
ss列出處在FIN-WAIT-1狀態的http、https連接
sockets、ss常用的state狀態:
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地址篩選
# 列出來至120.33.31.1,80端口的連接 |
ss使用端口篩選
socket is closed、OP運算符如下:
<= or le : 小于等于 >= or ge : 大于等于 |
< or lt : 小于這個端口 > or gt : 大于端口 |
OP實例
ss sport = :http 也可以是 ss sport = :80 |
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少很多
websocket原理、ss命令幫助
??????? 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 ]