netstat -tuln可快速查看所有监听的TCP/UDP端口,不解析服务名、不查进程,无需root权限;加-p需sudo才能显示PID和进程名,配合grep可精准筛选指定端口。

直接用 netstat -tuln 就能看到所有正在监听的 TCP 和 UDP 端口,不解析服务名、不查进程,速度快且无需 root 权限。
基础监听端口查看(推荐入门命令)
运行以下命令可快速列出当前所有监听状态的端口:
- netstat -tuln:显示所有 TCP(-t)、UDP(-u)监听(-l)端口,以数字形式(-n)输出,适合日常快速确认
- 其中 0.0.0.0:80 表示监听所有 IPv4 地址,127.0.0.1:3306 表示仅本机可连,[::]:22 是 IPv6 全局监听
- 若只关心 TCP,可简化为 netstat -tln;只看 UDP 则用 netstat -uln
带进程信息的完整排查(需管理员权限)
要定位具体是哪个程序占用了端口,必须加 -p 参数,并用 sudo 运行:
-
sudo netstat -tulnp:显示协议、本地地址、PID 和进程名,例如
tcp 0 0 *:80 *:* LISTEN 1234/nginx - 若提示
command not found,说明系统未安装 net-tools:Ubuntu/Debian 执行 sudo apt install net-tools,CentOS/RHEL 执行 sudo yum install net-tools - 注意:不加 sudo 时,-p 会失效,PID 列显示为
-,无法识别其他用户启动的服务
精准筛选指定端口
结合 grep 可快速聚焦目标端口:
- 查 80 端口是否被监听:sudo netstat -tulnp | grep :80
- 查 22 端口并过滤 ssh 相关行:sudo netstat -tulnp | grep ':22.*ssh'
- 仅看 IPv4 的监听(避开 IPv6 干扰):sudo netstat -tulnp | grep '^[^ ]*.*:端口号.*LISTEN.*0.0.0.0'
补充实用技巧
遇到常见问题时,这些操作能帮你绕过障碍:
- 如果 netstat -tulnp 没显示进程名,但端口确实在监听,可能是进程已退出但 socket 未释放,可用 ss -tulnp | grep :端口 或 lsof -i :端口 交叉验证
- 想持续观察变化,用 watch -n 2 'sudo netstat -tulnp | grep :80' 实现每两秒刷新一次
- 检查端口是否开放对外访问,重点看 Local Address 列:出现 0.0.0.0 或 * 表示允许外部连接;127.0.0.1 表示仅限本机


















