ss 命令介绍和使用案例
ss
命令 (Socket Statistics) 是一个 Linux 下的命令行工具,用于显示 socket 统计信息。它与 netstat
命令类似,但 ss
能够显示更多更详细的 TCP 和连接状态信息,并且在处理大量 socket 连接时速度更快。ss
命令利用 TCP 协议栈中的 tcp_diag
模块获取内核中的第一手信息,从而提高性能
常用选项:
-h
,--help
: 显示帮助信息.-v
,--version
: 显示版本号.-n
,--numeric
: 不解析服务名称,如端口号 "22" 不会显示成 "ssh".-r
,--resolve
: 把 IP 解释为域名,把端口号解释为协议名称.-a
,--all
: 显示所有 sockets,对 TCP 协议来说,既包含监听的端口,也包含建立的连接.-l
,--listening
: 只显示处于监听状态的端口.-o
,--options
: 显示 timer 信息.-e
,--extended
: 显示详细的 socket 信息.-m
,--memory
: 显示 socket 内存使用情况.-p
,--processes
: 显示监听端口的进程 (Ubuntu 上需要 sudo).-4
,--ipv4
: 只显示 IP version 4 的 sockets.-6
,--ipv6
: 只显示 IP version 6 的 sockets.-0
,--packet
: 显示 PACKET sockets.-t
,--tcp
: 显示 TCP 协议的 sockets.-S
,--sctp
: 显示 SCTP sockets.-u
,--udp
: 显示 UDP 协议的 sockets.-d
,--dccp
: 显示 DCCP sockets.-w
,--raw
: 显示 RAW sockets.-x
,--unix
: 显示 Unix domain sockets.-f, --family=FAMILY
: 显示 FAMILY 类型的 sockets,FAMILY 可以是inet
,inet6
,link
,unix
,netlink
,vsock
,tipc
,xdp
,help
.-K, --kill
: 强制关闭 sockets,显示关闭的内容.-H, --no-header
: 隐藏 header 行.-O, --oneline
: 在单行上打印 socket 的数据.-A, --query=QUERY, --socket=QUERY
: QUERY 可以是all
,inet
,tcp
,udp
,raw
,unix
,unix_dgram
,unix_stream
,unix_seqpacket
,packet
,netlink
,vsock_stream
,vsock_dgram
,tipc
.-D, --diag=FILE
: 将关于 TCP sockets 的原始信息转储到 FILE.-F, --filter=FILE
: 从 FILE 读取 filter 信息
使用案例:
ss
: 显示所有连接.
ss -l
: 显示本地所有监听端口.ss -pl
: 显示每个进程及其打开的 socket.ss -t -a
: 显示所有 TCP 连接.ss -u -a
: 显示所有 UDP 连接.ss -lt
: 列出所有监听的 TCP sockets.ss -s
: 显示 socket 使用概况.
ss
命令可以用来获取 socket 统计信息,它可以显示和 netstat
类似的内容,但 ss
的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,而且比 netstat
更快