要查看linux系统中端口占用情况,最常用的方法是使用lsof命令。一、若未安装,可通过包管理器安装,如debian/ubuntu用sudo apt install lsof,centos/rhel用sudo yum install lsof,fedora或新版本rhel用sudo dnf install lsof。二、查特定端口如8080,执行sudo lsof -i :8080,输出将显示进程名、pid、用户等信息。三、可结合netstat或ss查看所有监听端口,如用sudo netstat -tuln | grep listen或sudo ss -tuln找到目标端口后再用lsof定位具体进程。四、确认无用后可用sudo kill -9

在Linux系统中,查看端口占用情况最常用也最直观的方法之一就是使用
lsof命令。它不仅能告诉你哪个进程占用了某个端口,还能显示相关的用户、协议类型等信息。如果你遇到服务启动失败、端口冲突等问题,用这个命令排查非常高效。

一、安装 lsof 工具(如果未安装)
大多数主流Linux发行版默认都自带了
lsof,如果没有,可以通过包管理器快速安装:

-
Debian/Ubuntu:
sudo apt install lsof
-
CentOS/RHEL:

sudo yum install lsof
-
Fedora 或 新版本RHEL:
sudo dnf install lsof
装好之后就可以开始用了。
二、查看特定端口的占用情况
比如你想查一下 8080端口 被谁占用了,可以这样执行:
sudo lsof -i :8080
输出结果类似这样:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME node 12345 user 20u IPv6 123456 0t0 TCP *:8080 (LISTEN)
可以看到是哪个程序(如 node)、进程ID(PID)、用户等信息正在监听该端口。
小技巧:如果你不知道具体端口号,也可以模糊查找,比如查所有TCP连接:lsof -i TCP
三、结合 netstat 或 ss 快速定位问题端口
有时候你只知道服务起不来,但不确定是哪个端口被占用了。这时候可以配合
netstat或
ss查看当前所有监听中的端口:
sudo netstat -tuln | grep LISTEN
或者更现代的方式:
sudo ss -tuln
然后找到感兴趣的端口号,再用
lsof -i :端口号查具体进程。
四、杀掉占用端口的进程(谨慎操作)
如果你确认某个进程占用了端口但不再需要,可以直接通过
kill杀掉:
sudo kill -9
比如上面例子中的 PID 是 12345:
sudo kill -9 12345
当然,操作前最好确认一下这个进程是否重要,避免误杀系统服务。
基本上就这些。
lsof功能强大,除了查端口,还能查文件、网络连接等,是一个排查系统问题的好工具。平时遇到“Address already in use”这类错误时,熟练使用它能帮你快速定位问题根源。










