ss 命令是 Socket Statistics 的缩写,它是一个用于显示 socket 统计信息的工具,常用于获取网络连接和监听端口的信息。它提供了比 netstat 更多的 TCP 和连接状态的详细信息,并且执行速度更快。ss 命令利用了 TCP 协议栈中的 tcp_diag 模块,可以直接从 Linux 内核获取信息,从而提高了效率。

常用选项

  • -t, --tcp:仅显示 TCP 套接字。
  • -u, --udp:仅显示 UDP 套接字。
  • -x, --unix:显示 Unix 域套接字。
  • -n, --numeric:不解析服务名称,直接显示数字。
  • -l, --listening:仅显示监听状态的套接字。
  • -p, --processes:显示使用套接字的进程信息。
  • -a, --all:显示所有套接字。
  • -r, --resolve:解析服务名称。
  • -s, --summary:显示套接字使用摘要。

常见用例

  1. 查看所有 TCP 连接:

bash ss -t -a

  1. 查看监听的端口:

bash ss -l

  1. 查看特定服务的连接(例如 SSH):

bash ss -tlp | grep ssh

  1. 查看进程使用的 socket:

bash ss -pl

  1. 显示所有 UDP Sockets:

bash ss -u -a

  1. 显示所有处于 TIME-WAIT 状态的 TCP 连接:

bash ss -t state time-wait

  1. 显示所有建立的连接并显示进程信息:

bash ss -tap

  1. 仅显示 IPv4 或 IPv6 连接:

bash ss -4 或 ss -6

  1. 显示所有连接的统计摘要:

bash ss -s

  1. 显示所有源端口或目的端口为特定端口的套接字(例如端口 80):

    bash ss -ant '( dport = :80 or sport = :80 )'

注意事项

  • 使用 ss 命令通常需要 root 权限,特别是在使用 -p 选项查看进程信息时。
  • ss 命令的输出可以通过各种选项和过滤器进行定制,以满足特定的需求。
  • 在使用 ss 命令时,应该根据实际需求选择合适的选项,以获取最有用的信息。

以上信息结合了多个来源的详细解释和示例,以帮助用户更好地理解和使用 ss 命令。