Linux netstat 命令是网络管理中不可或缺的工具,主要用于显示网络连接、路由表、接口状态等信息,它能够帮助系统管理员和开发者快速诊断网络问题、监控网络连接状态,是 Linux 系统运维的必备技能之一,本文将详细介绍 netstat 命令的常用选项、输出字段含义及实际应用场景。

netstat 命令基础概述
netstat 命令的全称为 “network statistics”,即网络统计信息,它通过读取内核中的网络协议栈数据,生成当前系统的网络连接状态报告,在早期 Linux 版本中,netstat 是默认安装的工具,但近年来部分发行版(如 Ubuntu 18.04+、CentOS 7)已将其弃用,推荐使用 ss 命令替代,由于 netstat 的广泛使用和良好的兼容性,许多场景下仍需掌握其用法。
基本语法格式为:
netstat [选项] [参数]
常用选项包括 -t(TCP 协议)、-u(UDP 协议)、-l(仅显示监听端口)、-n(以数字形式显示地址和端口)、-p(显示进程 ID 和名称)、-a(显示所有连接)等。
核心选项详解与输出解析
常用选项组合
netstat -tuln:显示所有 TCP(-t)和 UDP(-u)监听(-l)端口,并以数字形式(-n)展示地址和端口,避免 DNS 解析延迟。
输出示例:Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp6 0 0 :::80 :::* LISTEN udp 0 0 127.0.0.53:53 0.0.0.0:*netstat -anp:显示所有(-a)网络连接,以数字形式(-n)展示信息,并关联进程(-p),通过grep过滤特定端口或进程,可快速定位问题进程。netstat -i:显示网络接口统计信息,包括接收(RX)和发送(TX)的数据包数量、错误数等,用于排查网络接口故障。netstat -s:按协议显示详细的网络统计信息,如 TCP 重传次数、UDP 校验和错误等,适用于深度网络性能分析。
输出字段解析
以 netstat -tuln 为例,关键字段含义如下:
| 字段名 | 说明 |
|————–|———————————————————————-|
| Proto | 协议类型,如 tcp、udp、tcp6、unix 等 |
| Recv-Q | 接收队列中等待处理的数据包大小(单位:字节),通常为 0 表示正常 |
| Send-Q | 发送队列中已发送但未确认的数据包大小,若持续较大可能存在网络拥塞 |
| Local Address| 本地地址和端口,0.0.0 表示监听所有 IPv4 地址, 表示 IPv6 |
| Foreign Address| 远程地址和端口, 表示未连接(仅监听状态) |
| State | 连接状态,如 LISTEN(监听)、ESTABLISHED(已建立)、TIME_WAIT(等待关闭)|
实际应用场景
检查端口占用
当某个服务无法启动时,可能是端口被占用,检查 80 端口是否被占用:

netstat -tuln | grep 80
若输出包含 LISTEN,说明端口被占用;可通过 -p 选项查看占用进程的 PID,结合 kill 命令终止进程。
监控网络连接状态
查看当前系统的活跃连接数及远程 IP:
netstat -an | grep ESTABLISHED | wc -l # 统计已建立的连接数
netstat -an | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr # 按连接数排序远程 IP
此命令可帮助识别异常连接,如 DDoS 攻击时的单一 IP 大量连接。
分析网络协议统计
通过 netstat -s 查看 TCP 协议的重传次数和错误数:
netstat -s | grep -i "tcp"
若重传次数(segments retransmitted)过高,可能表明网络质量差或配置不当。

查看路由表
虽然 route 或 ip route 是查看路由表的专用命令,但 netstat -rn 也可实现相同功能,-r 表示显示路由表,-n 避免 DNS 解析。
注意事项与替代方案
注意事项
- 权限要求:部分选项(如
-p)需要 root 权限才能显示进程信息。 - 性能影响:
netstat需要遍历内核中的网络数据结构,在连接数较多的系统上执行可能较慢,建议结合grep过滤。 - IPv6 支持:通过
tcp6、udp6等字段可区分 IPv4 和 IPv6 连接,需确保系统已启用 IPv6。
替代命令:ss
现代 Linux 发行版推荐使用 ss 命令,它是 iproute2 包的一部分,性能优于 netstat,能更快地输出结果。
ss -tuln # 功能等同于 netstat -tuln
ss 的输出格式更简洁,且支持更多高级过滤选项,建议新用户优先学习 ss。
尽管 netstat 逐渐被 ss 替代,但在许多遗留系统和传统运维场景中,它仍然是快速排查网络问题的利器,掌握 netstat 的核心选项和输出解析,能够有效提升网络故障排查效率,在实际使用中,可根据需求灵活组合选项,并结合 grep、awk 等工具进行数据过滤,从而精准定位网络连接、端口占用及协议状态等问题,对于追求更高性能的用户,建议逐步过渡到 ss 命令,以适应现代网络管理需求。



















