linux netstat 是 net-tools 套件里面经典网络排查命令,核心作用是查看网络连接 监听端口 路由表 网卡统计信息 多播组成员,运维排查端口占用 查看 TCP 连接状态 确认服务是否正常监听的时候高频使用,和 ifconfig 一样属于传统老牌工具,新版 Linux 发行版已经逐步弃用 net-tools,官方推荐使用 ss 命令替代,但是大量老服务器 历史脚本 运维手册仍然还在使用 netstat,它可以同时查看 TCP UDP 连接,区分监听状态和已建立连接,还能显示对应的进程 PID 和程序名称,理解每一列输出含义,掌握常用组合参数,分清 netstat 和 ss 命令的差别,是 Linux 网络排错必备基础技能。
基础语法
命令格式
netstat [参数]
不带任何参数直接执行 netstat,默认会输出全部活动网络连接
核心常用参数对照表
| 参数 | 功能说明 |
|---|---|
| -t | 显示 TCP 协议连接 |
| -u | 显示 UDP 协议连接 |
| -l | 只显示 LISTEN 监听状态端口 |
| -n | 数字形式显示 IP 和端口,不做 DNS 反向解析,加速输出 |
| -p | 显示对应的进程 PID 与进程名称,需要 root 权限 |
| -a | 显示全部连接,包含监听和已建立连接 |
| -r | 输出路由表,功能类似 route 命令 |
| -i | 输出网卡接口统计信息 |
| -e | 显示扩展信息,包含 UID 收发队列等详细字段 |
| -c | 持续刷新输出,类似实时监控 |
高频经典组合:netstat -tlnp
含义:查看所有 TCP 监听端口,显示数字 IP 端口,附带进程 PID,这是查端口占用最常用写法
输出字段深度解读
执行 netstat 输出主要列
Proto 协议类型 tcp udp
Recv-Q 接收队列,已经接收但是还没有被应用读取的数据
Send-Q 发送队列,已经发送但是还没有收到对端 ACK 确认的数据
Local Address 本地地址 本地监听端口
Foreign Address 远程对端地址 远程端口
State 连接状态
PID/Program name 进程 ID 和进程名称
重点 TCP 连接状态
LISTEN 监听,等待客户端接入
ESTABLISHED 已经建立成功连接
TIME_WAIT 主动关闭方,等待超时回收连接
CLOSE_WAIT 被动关闭方,等待应用调用 close 关闭连接
SYN_SENT 已经发送 SYN,等待对方回应
实操分步示例
查看所有 TCP 监听端口 + 进程
netstat -tlnp
查看所有 UDP 监听端口
netstat -ulnp
查看全部 TCP 连接包含已建立连接
netstat -tan
查看路由表
netstat -r
持续实时刷新
netstat -tlnp -c
过滤查找指定端口,比如 80 端口
netstat -tlnp | grep 80
netstat 和 ss 命令对比表
| 对比项 | netstat | ss |
|---|---|---|
| 所属套件 | net-tools | iproute2 |
| 新版系统默认预装 | 很多新版默认不再预装 | 新版系统默认自带 |
| 性能 | 连接数量很大的时候查询偏慢 | 查询速度更快 |
| 功能 | 连接 路由 网卡统计 | 侧重 socket 连接查询 |
| 兼容性 | 老脚本大量使用 | 现代运维推荐替代工具 |
常见排错要点清单
1 提示 command not found,代表没有安装 net-tools,Debian/Ubuntu 执行 apt install net-tools,CentOS/RHEL 执行 yum install net-tools
2 加 - p 参数看不到进程,没有使用 root 权限执行,普通用户无法读取其他进程信息
3 大量 TIME_WAIT 堆积,会消耗端口资源,一般是短连接业务频繁创建断开连接导致
4 Recv-Q 长期不为 0,代表应用程序读取数据不及时,程序处理存在阻塞
进阶补充
netstat 除了 socket 连接,还可以查看路由表和网卡统计,属于多功能集成老工具,但是项目维护已经停止,新环境排错优先 ss,老服务器排错依旧需要熟练掌握 netstat。
【常见问题】
问题 1 linuxnetstat 也就是 netstat 命令为什么提示 command not found
回答 1 linuxnetstat 也就是 netstat 属于 net-tools 组件,新版 linux 默认没有预装,需要手动安装 net-tools 包之后,才可以正常执行 linuxnetstat 命令。
问题 2 linuxnetstat 查端口占用最常用参数组合是什么
回答 2 linuxnetstat 也就是 netstat 查端口占用最常用是 - tlnp 组合,linuxnetstat 会列出 TCP 监听端口,并且显示对应的进程 PID 和程序名称。
问题 3 linuxnetstat 里面 TIME_WAIT 是什么状态
回答 3 linuxnetstat 也就是 netstat 输出里 TIME_WAIT 是 TCP 主动关闭方的状态,连接关闭之后需要等待超时回收,短连接业务很容易出现大量 TIME_WAIT 堆积。
问题 4 linuxnetstat 和 ss 命令是什么关系
回答 4 linuxnetstat 也就是 netstat 是老旧 net-tools 工具,ss 属于 iproute2 套件,是新版 linux 推荐替代 linuxnetstat 的现代网络查询命令,查询性能更好。
【免责申明】
本文 linuxnetstat 也就是 netstat 命令详解基于传统 net-tools 版本编写,不同发行版参数细节存在细微差异,执行 man netstat 可查看本机手册页,内容仅用于 linux 运维学习参考。


