Linux查看开放端口与关联进程首选ss命令(sudo ss -tuln),它速度快、预装率高;lsof适合精准定位进程(如sudo lsof -i :8080);netstat用于兼容旧系统,需手动安装net-tools。

Linux 查看系统所有开放端口与关联进程,核心是查“监听中(LISTEN)”的网络套接字,并确认背后运行的进程。最常用、最可靠的工具就三个:ss、lsof 和 netstat,各自定位清晰,不需全部掌握,选一两个熟练即可。
ss:现代系统首选,速度快、结果准
ss(socket statistics)直接读取内核 socket 表,无需解析层,响应快、预装率高,是当前主流发行版的默认推荐工具。
- 查看全部监听中的 TCP/UDP 端口(数字格式,不解析主机名和服务名):
sudo ss -tuln - 只看 TCP 监听端口(排除 UDP 干扰):
sudo ss -tln - 查某端口(如 8080)是否被占用及对应进程:
sudo ss -tulnp | grep ':8080'(-p 参数必须加 sudo 才能显示进程名和 PID)
lsof:精准定位进程,适合排查冲突
lsof 把端口当作“打开的文件”,输出直观,字段明确,特别适合快速知道“谁在用这个端口”。
- 查指定端口(如 3306)被哪个进程占用:
sudo lsof -i :3306 - 列出所有 LISTEN 状态的 TCP 端口(禁用解析,提速):
sudo lsof -iTCP -sTCP:LISTEN -P -n - 已知进程名(如 nginx),反查它监听了哪些端口:
sudo lsof -i -a -p $(pidof nginx)
netstat:兼容旧环境,语义清晰但需手动安装
netstat 在老旧系统、精简容器镜像或未预装 ss 的环境中仍有价值,参数含义直白,但多数新系统默认不带,需先装 net-tools。
- 安装(Ubuntu/Debian):
sudo apt install net-tools
(CentOS/RHEL):
sudo yum install net-tools - 查看所有监听端口(数字格式):
sudo netstat -tuln - 查特定端口(如 80)并显示进程:
sudo netstat -tulpn | grep ':80'
补充说明:其他辅助手段
除了上述主力工具,还有几个轻量级方法可按需使用:
- fuser:快速查端口占用并可直接 kill,例如 sudo fuser 8080/tcp 或 sudo fuser -k 8080/tcp(强制终止)
- nmap:从外部视角扫描本机开放端口(注意:云服务器常受安全组限制,结果可能不准),如 nmap 127.0.0.1
- telnet / nc / curl:用于测试端口连通性,而非查看监听状态,例如 nc -zv 127.0.0.1 22











