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

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 列显示类似 *:22、0.0.0.0:3306、127.0.0.1:6379 的格式,含义如下:
-
*:22或0.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,更快更轻量)。
实用小技巧
提升效率的几个细节: