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
列出当前监听端口