Linux网络状态工具ss命令使用详解

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

# time netstat -ant | grep EST | wc -l
3100
 
real 0m12.960s
user 0m0.334s
sys 0m12.561s

ss

# time ss -o state established | wc -l
3204
 
real 0m0.030s
user 0m0.005s
sys 0m0.026s

结果很明显ss统计并发连接数效率完败netstat,在ss能搞定的情况下, 你还会在选择netstat吗, 还在犹豫吗, 看以下例子,或者跳转到帮助页面.

  • 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详细信息:
  • linux/performance/ss命令.txt
  • 最后更改: 2019/04/16 18:31
  • (外部编辑)