可通过lsof、netstat、ss命令及/proc文件系统定位端口占用进程:一、lsof -i :端口号查看指定端口;二、netstat -tulnp列出监听端口及PID;三、ss -tulnp替代netstat;四、结合sudo ss与/proc/PID/cmdline追溯进程详情。

如果您在Linux系统中需要确认某个端口是否被占用,以及具体由哪个进程占用,则可以通过命令行工具快速定位。以下是解决此问题的步骤:
一、使用lsof命令查看端口占用
lsof(list open files)可列出系统中所有打开的文件,网络端口在Linux中被视为特殊文件,因此能通过该命令识别监听或已连接的端口及其对应进程。
1、执行命令查看指定端口号的占用情况:lsof -i :80
2、若需查看所有监听端口,运行:lsof -i -P -n | grep LISTEN
3、为避免解析主机名和端口服务名以加快输出,添加-P和-n参数:lsof -i :3306 -P -n
二、使用netstat命令查看端口占用
netstat是传统网络统计工具,可显示网络连接、路由表、接口统计等信息,适用于较老版本Linux系统或未安装lsof的环境。
1、检查特定端口(如8080)的监听状态:netstat -tuln | grep :8080
2、列出所有TCP和UDP监听端口,并显示对应PID与程序名:netstat -tulnp
3、若提示“Command not found”,需先安装net-tools包:sudo apt install net-tools(Debian/Ubuntu)或sudo yum install net-tools(CentOS/RHEL)
三、使用ss命令替代netstat
ss(socket statistics)是现代Linux中推荐的netstat替代工具,性能更高,输出更简洁,且默认集成于大多数发行版中。
1、查看指定端口(如22)的监听进程:ss -tuln | grep :22
2、显示监听端口及对应PID和程序名(需root权限):sudo ss -tulnp | grep :443
3、仅列出监听TCP端口并解析进程信息:sudo ss -tlnp
四、结合pidof与/proc查找关联进程
当上述命令因权限限制无法显示PID时,可通过端口绑定信息在/proc文件系统中手动追溯,适用于无sudo权限但可读取/proc的场景。
1、查找监听某端口的进程PID(例如端口5000):sudo lsof -i :5000 -t
2、若lsof不可用,使用ss获取PID后进入对应/proc目录:sudo ss -tulnp | grep :5000
3、根据输出中的PID(如1234),查看其启动命令:cat /proc/1234/cmdline | tr '\0' ' '










