Mac上端口被占用时,可用lsof精确查进程、netstat验证监听状态、活动监视器图形化终止、网络实用工具扫描端口,四法协同定位并释放端口。

如果您在Mac上启动本地服务(如开发服务器、数据库或Web应用)时遇到“端口已被占用”错误,则说明目标端口正被其他进程监听。以下是多种可靠方法,用于定位并确认具体占用该端口的进程。
一、使用 lsof 命令精确查询指定端口
lsof(List Open Files)将网络端口视为系统打开的文件资源,无需额外安装,可直接输出进程名、PID、用户及连接状态,结果精准且具备高可靠性。
1、按下 Command + 空格 打开聚焦搜索,输入“终端”并回车启动。
2、在终端中输入命令:lsof -i :端口号,将“端口号”替换为实际需检查的数字(例如 3000)。
3、若需跳过 DNS 解析以提升响应速度并避免主机名混淆,使用增强参数:lsof -P -n -i :端口号。
4、执行后,若端口被占用,输出中将包含 COMMAND(进程名)、PID(进程ID)、USER(所属用户)、NAME(连接详情)四列;其中 PID 列数值即为进程唯一标识符。
5、若命令无任何输出,则说明该端口当前未被任何进程监听。
二、限定 TCP LISTEN 状态精确筛选监听进程
默认 lsof -i :端口号 可能返回 ESTABLISHED、CLOSE_WAIT 等非监听连接,干扰对真正服务进程的判断;通过限定 TCP LISTEN 状态,可排除无关条目,确保返回结果均为绑定端口的服务进程。
1、在终端中输入:lsof -iTCP -sTCP:LISTEN | grep :端口号,将“端口号”替换为实际数字(如 8080)。
2、该命令仅输出处于 LISTEN 状态的 TCP 连接,确保返回结果均为实际占用端口的监听进程。
3、从输出中提取 PID 字段对应数值,用于后续终止操作。
三、使用 netstat 配合 grep 快速验证监听状态
netstat 提供系统级网络连接快照,适用于交叉验证或全局扫描场景,尤其当需确认端口是否处于监听状态而无需立即获取进程详情时。
1、在终端中运行:netstat -an | grep LISTEN,列出所有监听中的网络端口。
2、进一步过滤目标端口:netstat -an | grep LISTEN | grep :端口号,例如 netstat -an | grep LISTEN | grep :5000。
3、观察输出中 “Local Address” 列是否出现类似 127.0.0.1:端口号 或 *:端口号 的条目;若存在且状态为 LISTEN,则表明端口正被占用。
四、通过活动监视器图形化定位进程
对于不熟悉命令行操作的用户,活动监视器提供可视化界面,支持按 PID 或进程名关键词搜索,并允许直接点击强制退出关联进程,降低误操作风险。
1、打开“应用程序 → 实用工具 → 活动监视器”,或通过聚焦搜索启动。
2、点击顶部标签栏的“搜索框”,输入从 lsof 或 netstat 获取的 PID 数字(例如 12345)。
3、搜索结果自动高亮匹配进程;双击该进程,或点击右上角信息按钮(i 图标)查看其完整路径、启动参数及打开的文件。
4、选中该进程后,点击左上角 X 按钮,在弹出窗口中选择“强制退出”。
五、使用系统报告中的网络实用工具扫描本机开放端口
macOS 内置的“网络实用工具”提供免命令行的可视化界面,可扫描本机所有开放的 TCP 端口及其状态,适合不熟悉终端操作的用户快速获取端口开放概览。
1、点击屏幕左上角苹果图标 ,选择“关于本机”。
2、在弹出窗口中点击“系统报告”按钮。
3、在系统报告左侧边栏底部诊断区域中,点击“网络实用工具”。
4、在打开的窗口中切换至“端口扫描”标签页。
5、在输入框中填入本机 IP 地址(可通过“系统设置 > 网络”查看当前连接的 IPv4 地址)。
6、点击“扫描”按钮,工具将列出所有开放 TCP 端口及对应状态(open/closed)。

















