最直接有效的方法是运行sudo lsof -i :端口号,可精准获取占用该端口的应用名(command)、进程id(pid)及监听状态(如*:端口号(listen)),结果可靠、无需安装。

直接用 sudo lsof -i :端口号 就能查出谁占着那个端口,关键信息包括进程名、PID 和监听状态。
查指定端口被谁占用
这是最常用场景。比如发现 8080 启动不了,运行:
Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...
- sudo lsof -i :8080 —— 显示所有与 8080 相关的连接(含监听和已建立)
- sudo lsof -iTCP:8080 -sTCP:LISTEN —— 只看 TCP 协议下处于 LISTEN 状态的监听进程(更精准)
- 加 -P -n 参数可避免端口转服务名、IP 转域名,输出更干净: sudo lsof -i :8080 -P -n
理解输出里的关键字段
执行后典型输出类似:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEnginx 1234 root 6u IPv4 1234567 0t0 TCP *:8080 (LISTEN)
- PID 是进程号,后续 kill 或调试都靠它
- COMMAND 是进程名,注意可能只是可执行文件名,不一定是完整路径
-
NAME 列显示
*:8080 (LISTEN)表示它正在监听该端口;如果是192.168.1.10:8080->10.0.0.5:54321 (ESTABLISHED)则是已建立的连接
常见补充操作
- 确认进程详情:ps -p PID -o pid,ppid,cmd,%mem,%cpu,user
- 终止占用进程:kill -9 PID(谨慎使用,优先尝试
kill PID) - 查多个端口:sudo lsof -i :8080,3000,5037
- 查某范围端口:sudo lsof -i :8000-8100
- 只查 IPv4 或 IPv6:sudo lsof -i4 :8080 或 sudo lsof -i6 :8080
权限与注意事项
- 普通用户执行可能看不到其他用户的进程,必须加 sudo 才完整
- 某些容器或沙箱环境里,lsof 可能无法看到宿主机外的进程,需进对应命名空间排查
- 如果没返回结果,检查端口是否真在监听(可用
ss -tlnp | grep :8080交叉验证)










