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等.
展示他之前来做个对比,统计服务器并发连接数
netstat#timenetstat-ant|grepEST|wc-l3100real0m12.960suser0m0.334ssys0m12.561s#timess-ostateestablished|wc-l3204real0m0.030suser0m0.005ssys0m0.026s
结果很明显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-sTotal:3519(kernel3691)TCP:26557(estab3163,closed23182,orphaned194,synrecv0,timewait23182/0),ports1452TransportTotalIPIPv6*3691--RAW220UDP1073TCP337533687INET3387337710FRAG000
列出当前监听端口
#ss-lRecv-QSend-QLocalAddress:PortPeerAddress:Port010:::5989:::*05*:rsync*:*0128:::sunrpc:::*0128*:sunrpc*:*0511*: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 : 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:表示地址规则
如下:
sssrc120.33.31.1#列出来之20.33.31.1的连接
#列出来至120.33.31.1,80端口的连接sssrc120.33.31.1:httpsssrc120.33.31.1:8
ss使用端口筛选
ss dport OP PORT
OP:是运算符
PORT:表示端口
dport:表示过滤目标端口、相反的有sport
OP运算符如下:
<=orle:小于等于>=orge:大于等于==oreq:等于!=orne:不等于端口<orlt:小于这个端口>orgt:大于端口
OP实例
sssport=:http也可以是sssport=:80ssdport=:httpssdport\>:1024sssport\>:1024sssport\<:32000sssporteq:22ssdport!=:22ssstateconnectedsport=:httpss\(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命令帮助
#ss-hUsage: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=QUERYQUERY:={all|inet|tcp|udp|raw|unix|packet|netlink}[,QUERY]-D,--diag=FILEDumprawinformationaboutTCPsocketstoFILE-F,--filter=FILEreadfilterinformationfromFILEFILTER:=[stateTCP-STATE][EXPRESSION]