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等.
展示他之前来做个对比,统计服务器并发连接数
- eal0m12.960s
- user0m0.334s
- sys0m12.561s
- #timess-ostateestablished|wc-l
- 3204
- real0m0.030s
- user0m0.005s
- sys0m0.026s
- netstat
- #timenetstat-ant|grepEST|wc-l
- 3100
- r
结果很明显ss统计并发连接数效率完胜netstat,在ss能搞定的情况下, 你还会在选择netstat吗, 还在犹豫吗, 看以下例子,或者跳转到帮助页面.
- ss-l显示本地打开的所有端口
- ss-pl显示每个进程具体打开的socket
- ss-t-a显示所有tcpsocket
- ss-u-a显示所有的UDPSocekt
- ss-ostateestablished'(dport=:smtporsport=:smtp)'显示所有已建立的SMTP连接
- ss-ostateestablished'(dport=:httporsport=:http)'显示所有已建立的HTTP连接
- ss-xsrc/tmp/.X11-unix/*找出所有连接X服务器的进程
- ss-s列出当前socket详细信息:
显示sockets简要信息,列出当前已经连接,关闭,等待的tcp连接
- #ss-s
- Total:3519(kernel3691)
- TCP:26557(estab3163,closed23182,orphaned194,synrecv0,timewait23182/0),ports1452
- TransportTotalIPIPv6
- *3691–
- RAW220
- UDP1073
- TCP337533687
- INET3387337710
- FRAG000
列出当前监听端口
- #ss-lRecv-QSend-QLocalAddress:PortPeerAddress:Port
- 010:::5989:::*
- 05*:rsync*:*
- 0128:::sunrpc:::*
- 0128*:sunrpc*:*
- 0511*2:http*:*
- 0128:::ssh:::*
- 0128*:ssh*:*
- 0128:::35766:::*
- 0128127.0.0.1:ipp*:*
- 0128::1:ipp:::*
- 0100::1:smtp:::*
- 0100127.0.0.1:smtp*:*
- 0511*:https*:*
- 0100:::1311:::*
- 05*:5666*:*
- 0128*:3044*:*
ss列出每个进程名及其监听的端口
- #ss-pl
ss列所有的tcp sockets
- #ss-t-a
ss列出所有udp sockets
- #ss-u-a
ss列出所有http连接中的连接
- #ss-ostateestablished'(dport=:httporsport=:http)'
·以上包含对外提供的80,以及访问外部的80
·用以上命令完美的替代netstat获取http并发连接数,监控中常用到
ss列出本地哪个进程连接到x server
- #ss-xsrc/tmp/.X11-unix/*
ss列出处在FIN-WAIT-1状态的http、https连接
- #ss-ostatefin-wait-1'(sport=:httporsport=:https)'
ss常用的state状态:
- established
- syn-sent
- syn-recv
- fin-wait-1
- fin-wait-2
- time-wait
- closed
- close-wait
- last-ack
- listen
- closing
- all:Alloftheabovestates
- connected:Allthestatesexceptforlistenandclosed
- synchronized:Alltheconnectedstatesexceptforsyn-sent
- bucket:Showstates,whicharemaintainedasminisockets,i.e.time-waitandsyn-recv.
- big:Oppositetobucketstate.
ss使用IP地址筛选
- sssrcADDRESS_PATTERN
- src:表示来源
- ADDRESS_PATTERN:表示地址规则
- 如下:
- sssrc120.33.31.1#列出来之20.33.31.1的连接
- # 列出来至120.33.31.1,80端口的连接
- sssrc120.33.31.1:http
- sssrc120.33.31.1:8
ss使用端口筛选
- ssdportOPPORT
- OP:是运算符
- PORT:表示端口
- dport:表示过滤目标端口、相反的有sport
OP运算符如下:
- <=orle:小于等于>=orge:大于等于
- ==oreq:等于
- !=orne:不等于端口
- <orlt:小于这个端口>orgt:大于端口
OP实例
- sssport=:http也可以是sssport=:80
- ssdport=:http
- ssdport\\>:1024
- sssport\\>:1024
- sssport\\<:32000
- sssporteq:22
- ssdport!=:22
- ssstateconnectedsport=:http
- ss\\(sport=:httporsport=:https\\)
- ss-ostatefin-wait-1\\(sport=:httporsport=:https\\)dst192.168.1/24
为什么ss比netstat快:
netstat是遍历/proc下面每个PID目录,ss直接读/proc/net下面的统计信息。所以ss执行的时候消耗资源以及消耗的时间都比netstat少很多
- #ss-h
- Usage:ss[OPTIONS]
- ss[OPTIONS][FILTER]
- -h,–helpthismessage
- -V,–versionoutputversioninformation
- -n,–numericdon'tresolveservicenames
- -r,–resolveresolvehostnames
- -a,–alldisplayallsockets
- -l,–listeningdisplaylisteningsockets
- -o,–optionsshowtimerinformation
- -e,–extendedshowdetailedsocketinformation
- -m,–memoryshowsocketmemoryusage
- -p,–processesshowprocessusingsocket
- -i,–infoshowinternalTCPinformation
- -s,–summaryshowsocketusagesummary
- -4,–ipv4displayonlyIPversion4sockets
- -6,–ipv6displayonlyIPversion6sockets
- -0,–packetdisplayPACKETsockets
- -t,–tcpdisplayonlyTCPsockets
- -u,–udpdisplayonlyUDPsockets
- -d,–dccpdisplayonlyDCCPsockets
- -w,–rawdisplayonlyRAWsockets
- -x,–unixdisplayonlyUnixdomainsockets
- -f,–family=FAMILYdisplaysocketsoftypeFAMILY
- -A,–query=QUERY,–socket=QUERY
- QUERY:={all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]
- -D,–diag=FILEDumprawinformationaboutTCPsocketstoFILE
- -F,–filter=FILEreadfilterinformationfromFILE
- FILTER:=[stateTCP-STATE][EXPRESSION]