使用 sudo lsof -i :端口号(如 sudo lsof -i :8080)可查占用指定端口的进程,需加 sudo 才能查看其他用户进程;加 -n 和 -p 参数可禁用 dns 和服务名解析,提升速度并简化输出;还可通过 -i4/-i6 限定 ipv4/ipv6,或用 sudo lsof -i -p -n | grep listen 查所有监听端口。

直接用 sudo lsof -i :端口号 就能查到占用该端口的进程,比如查 8080 端口:sudo lsof -i :8080。关键是要加 sudo,否则普通用户看不到其他用户的进程信息。
查指定端口最常用的方式
这是日常排查最直接的方法:
-
sudo lsof -i :8080—— 查 8080 端口被谁占用 -
sudo lsof -i :3306—— 查 MySQL 默认端口 -
sudo lsof -i :22—— 查 SSH 是否在运行
输出里重点关注 COMMAND(进程名)、PID(进程号)、USER(所属用户)和 NAME(监听地址与端口,如 *:8080 或 127.0.0.1:5000)这几列。
避免 DNS 和服务名解析,提升响应速度
加上 -n 和 -P 参数可跳过主机名和端口名解析,结果更干净、执行更快:
sudo lsof -nP -i :8080-
-n:不把 IP 地址转成域名(比如不把127.0.0.1查成localhost) -
-P:不把端口号转成服务名(比如不把8080显示为http-alt)
查所有监听中的 TCP/UDP 端口
想一次性看全系统正在监听的网络端口,可以这样:
sudo lsof -i -P -n | grep LISTEN- 其中
-i表示只查网络连接,grep LISTEN过滤出监听状态的行 - 输出中每行末尾的
(LISTEN)表明该端口正等待入站连接
精准定位 IPv4 或 IPv6 的端口占用
如果只想查 IPv4 或 IPv6 的情况,可用 -i4 或 -i6:
-
sudo lsof -i4 :80—— 只查 IPv4 的 80 端口 -
sudo lsof -i6 :8443—— 只查 IPv6 的 8443 端口 - 不加
4或6时,默认同时查两者











