mac端口被占用时,可用lsof(sudo lsof -i :端口)、netstat(sudo netstat -anvp tcp | grep listen | grep :端口)、活动监视器或网络实用工具定位并终止对应进程。

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











