netstat是Linux中查看网络连接、端口监听等信息的工具,通过netstat -tuln可查看所有监听端口,结合-p参数显示进程信息,使用grep过滤特定端口,适用于网络排查,需安装net-tools包,在新系统中推荐使用ss替代。

在Linux系统中,netstat 是一个非常实用的网络工具,用于查看网络连接、路由表、接口统计信息以及端口监听状态。虽然在较新的系统中推荐使用 ss 或 lsof,但 netstat 依然广泛使用,尤其在排查网络问题时非常直观。
安装 netstat(如未默认安装)
在某些精简版 Linux 发行版(如 CentOS 8+ 或 Ubuntu 最小安装)中,netstat 被归入 net-tools 包,需要手动安装:Ubuntu/Debian:
sudo apt install net-tools
CentOS/RHEL:
sudo yum install net-tools # CentOS 7 及以下
sudo dnf install net-tools # CentOS 8+/RHEL 8+
查看所有监听端口
使用以下命令查看当前系统中所有正在监听的端口(TCP 和 UDP):netstat -tuln
- -t:显示 TCP 端口
- -u:显示 UDP 端口
- -l:仅显示监听状态的端口(LISTEN)
- -n:以数字形式显示地址和端口号(不解析主机名和服务名)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
udp 0 0 0.0.0.0:68 0.0.0.0:*
查看某个端口是否被占用
如果你想检查特定端口(如 80 或 443)是否被占用,可以结合 grep 过滤:netstat -tuln | grep :80
如果输出包含相关行,说明该端口已被使用。例如:tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
表示有服务正在监听 80 端口(如 Nginx 或 Apache)。查看连接状态和进程信息
要查看端口对应的进程名和 PID,使用:netstat -tulnp
- -p:显示占用端口的进程 PID 和程序名
sudo netstat -tulnp
输出中会多出 “PID/Program name” 列,例如:tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd
这说明 PID 为 1234 的 sshd 进程正在监听 22 端口。查看当前所有网络连接
去掉 -l 参数,可以查看所有活动连接:netstat -tun
这会列出所有 TCP 和 UDP 的连接,包括已建立的连接(ESTABLISHED)、等待关闭的连接等。基本上就这些常用操作。netstat 虽然逐渐被 ss 取代,但命令直观、输出清晰,适合初学者快速掌握网络状态。注意在生产环境中及时关闭不必要的监听端口,保障系统安全。










