Linux netstat 常见参数与使用技巧

7次阅读

netstat 是 linux 下排查网络连接和端口状态最常用的命令,常用组合包括 -tuln 查监听端口、-tulnp 显示进程信息、-an 配合 grep 筛选特定端口或状态,结合监听地址含义可快速定位服务是否启动、端口占用及访问范围问题。

Linux netstat 常见参数与使用技巧

netstat 是 Linux 下排查网络连接和端口状态最常用的命令之一,掌握几个关键参数组合,就能快速定位服务是否启动、端口是否被占用、连接是否异常等问题。

常用参数组合及用途

单独使用某个参数作用有限,组合使用才真正高效:

  • netstat -tuln:查看所有正在监听的 TCP/udp 端口(-t TCP,-u UDP,-l 仅监听,-n 不解析域名和服务名);这是检查服务端口最常用的命令。
  • netstat -tulnp:在上一条基础上加 -p,显示占用端口的进程名和 PID(需 root 或 sudo 权限,否则可能显示“-”或报 permission denied)。
  • netstat -an | grep :80:快速筛选特定端口(如 80)的所有连接状态(监听、已建立、关闭中等),-a 包含全部连接,-n 避免 DNS 查询延迟。
  • netstat -tnp | grep ESTABLISHED:只看当前活跃的 TCP 连接,适合排查异常外连或高并发连接数。

识别监听地址含义

执行 netstat -tuln 后,Local Address 列显示类似 *:220.0.0.0:3306127.0.0.1:6379 的格式,含义如下:

  • *:220.0.0.0:22 表示该服务监听本机所有 IPv4 地址,外部可访问(如 ssh 默认行为)。
  • [::]:22 表示监听所有 IPv6 地址。
  • 127.0.0.1:6379 表示仅本地回环访问,外部无法连接(常见于 redis数据库等安全配置)。

快速定位端口冲突或服务异常

当新服务启动失败,常因端口已被占用。可按以下顺序排查:

  • 先运行 sudo netstat -tulnp | grep :端口号(例如 :8080),确认是否有进程在用;
  • 若输出为空,再检查是否是 systemd 服务未启用(如 systemctl is-active nginx);
  • 若看到进程但服务不可达,注意看 Local Address 是否为 127.0.0.1 —— 可能只是本地绑定,不响应外部请求;
  • 配合 ss -tuln 对比验证(现代系统推荐用 ss 替代 netstat,更快更轻量)。

实用小技巧

提升效率的几个细节:

  • -c 参数可连续刷新(如 netstat -tulnc 2 每 2 秒刷新一次),适合观察连接数动态变化;
  • -s 查看协议级统计(netstat -snetstat -st 查 TCP 统计),有助于发现丢包、重传等底层问题;
  • 搭配 grepawk 提取关键字段,例如:
    netstat -tulnp | awk ‘$1 ~ /tcp/ {print $4,$7}’ | column -t —— 整洁列出 TCP 监听地址与对应进程;
  • 非 root 用户运行 netstat -tuln 仍可查端口,但加 -p 就必须提权,这点要提前预料。
text=ZqhQzanResources