sudo netstat -anlp 可查看所有监听端口及对应进程,需 root 权限才能显示 pid 和程序名;等效推荐命令为 sudo ss -tunlp,更高效可靠。

netstat -anlp 是 Linux 中查看当前所有网络监听端口及其对应进程的常用命令,但需注意权限和替代方案。
命令说明与权限要求
该命令中各选项含义如下:
- -a:显示所有连接和监听端口(包括 TCP/UDP)
- -n:以数字形式显示地址和端口号(不解析主机名和服务名)
- -l:仅显示监听状态的套接字(即服务端正在等待连接的端口)
- -p:显示占用端口的进程 PID 和程序名(需 root 权限,普通用户执行会提示 “Permission denied”)
因此,要完整看到进程信息,通常需加 sudo 执行:
sudo netstat -anlp
常见输出字段解读
典型输出类似:
tcp6 0 0 :::80 :::* LISTEN 1234/nginx: master
- 第一列(tcp6):协议与地址族(tcp6 表示 IPv6 的 TCP,tcp 表示 IPv4)
- 第二、三列(0 0):发送/接收队列中未处理的数据字节数
- 第四列(:::80):本地监听地址与端口(
:::表示所有 IPv6 地址,*:80表示所有 IPv4 地址) - 第五列(:::* ):对端地址与端口(监听状态下为通配符)
- 第六列(LISTEN):套接字状态
- 第七列(1234/nginx: master):PID 与进程名(需 -p 且有权限才显示)
替代方案:ss 命令(推荐)
现代 Linux 发行版中,netstat 已逐渐被更高效、更准确的 ss(socket statistics)取代。等效命令为:
sudo ss -tunlp
- -t:TCP 端口
- -u:UDP 端口
- -n:数字格式
- -l:仅监听端口
- -p:显示进程(同样需要 sudo)
ss 输出更简洁,解析更快,且在高并发场景下更可靠。
快速定位特定端口或进程
结合 grep 可精准过滤:
- 查 80 端口:sudo netstat -anlp | grep ':80 '(注意空格避免匹配到 8080)
- 查 nginx 进程:sudo netstat -anlp | grep nginx
- 只看 TCP 监听:sudo netstat -tnlp
若想排除 IPv6 或只关注 IPv4,可用 netstat -anlp4;IPv6 则用 -6 后缀。











