netstat / ss — 网络连接和端口查看

ssnetstat 的现代替代品,用于查看网络连接、路由和接口统计信息。

命令说明

ss 命令查看套接字统计信息,包括 TCP/UDP 连接、监听端口、UNIX 套接字等。它比 netstat 更快、功能更强。netstat 则更通用(部分系统默认安装)。

应用场景

  • 查看监听端口
  • 检查已建立的连接
  • 排查端口占用
  • 查看连接状态统计
  • 检查 UDP 连接

常用示例

示例 1:查看所有监听端口

bash
复制代码
ss -tlnp
plaintext
复制代码
State   Recv-Q  Send-Q   Local Address:Port    Peer Address:Port   Process
LISTEN  0       128      0.0.0.0:80           0.0.0.0:*           users:(("nginx",pid=1234,fd=6))
LISTEN  0       128      0.0.0.0:22           0.0.0.0:*           users:(("sshd",pid=567,fd=3))
LISTEN  0       128      127.0.0.1:5432       0.0.0.0:*           users:(("postgres",pid=890,fd=7))
LISTEN  0       128      [::]:443             [::]:*              users:(("nginx",pid=1234,fd=7))

示例 2:查看所有 TCP 连接

bash
复制代码
ss -t

示例 3:查看已建立连接

bash
复制代码
ss -t state established

示例 4:查看端口占用

bash
复制代码
ss -tlnp | grep :8080

示例 5:查看连接统计

bash
复制代码
ss -s
plaintext
复制代码
Total: 325
TCP:   120 (estab 45, closed 60, orphaned 5, timewait 10)

Transport Total     IP        IPv6
RAW       1         0         1
UDP       15        10        5
TCP       60        45        15
INET      76        55        21
FRAG      0         0         0

示例 6:netstat 等价命令

bash
复制代码
netstat -tlnp
plaintext
复制代码
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1234/nginx: master
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      567/sshd

ss 参数详解

参数 说明
-t 显示 TCP 连接
-u 显示 UDP 连接
-x 显示 UNIX 套接字
-l 只显示监听状态的套接字
-a 显示所有套接字
-n 以数字形式显示地址和端口
-p 显示使用套接字的进程
-s 显示统计信息
-r 显示路由信息
-i 显示接口信息
-4 只显示 IPv4
-6 只显示 IPv6
-e 显示详细信息
-o 显示定时器信息
-m 显示内存使用
state STATE 筛选连接状态(established, listen, time-wait 等)

netstat 参数详解

参数 说明
-t TCP 连接
-u UDP 连接
-l 监听状态
-a 所有连接
-n 数字形式
-p 显示进程
-r 路由表
-i 接口统计
-s 协议统计
-c 持续刷新