端口被占用时,可依次用lsof精准查PID、netstat筛选监听、活动监视器图形化终止、网络实用工具扫描端口,最后用kill -9强制结束进程。

如果您尝试启动本地服务但提示端口已被占用,则可能是由于其他进程正在监听该端口。以下是解决此问题的步骤:
一、使用 lsof 命令精确查询指定端口占用
lsof(List Open Files)是 macOS 原生工具,将网络端口视为打开的文件进行管理,可直接显示占用目标端口的进程名称、PID、用户及协议类型,结果无需额外解析且具备高可靠性。
1、按下 Command + 空格打开聚焦搜索,输入“终端”并回车启动。
2、在终端中输入以下命令,将“端口号”替换为实际需要检查的数字(例如 3000):lsof -i :端口号。
3、若需跳过 DNS 解析以加快响应速度并避免主机名混淆,使用增强参数:lsof -P -n -i :端口号。
4、执行后,若端口被占用,输出中将包含 COMMAND(程序名)、PID(进程 ID)、USER(所属用户)、NAME(连接详情)四列;其中 PID 列的数值即为进程唯一标识符。
5、若命令无任何输出,则说明该端口当前处于空闲状态,未被任何进程监听。
二、使用 netstat 配合 grep 筛选监听端口
netstat 可展示系统级网络连接与监听状态,适用于全局扫描或验证 lsof 结果,尤其在某些精简版系统环境中更稳定可靠。
1、在终端中输入以下命令,列出所有 TCP 协议下处于 LISTEN 状态的端口:netstat -an | grep LISTEN。
2、如需快速定位某端口(例如 8080),直接追加过滤条件:netstat -an | grep LISTEN | grep :8080。
3、观察输出中的 “Local Address” 字段,若出现 *:8080 或 127.0.0.1:8080 且状态为 LISTEN,则确认该端口正被监听。
4、为获取对应进程 PID,可进一步执行:sudo lsof -iTCP -sTCP:LISTEN | grep :8080。
三、通过活动监视器图形化定位并终止进程
活动监视器提供可视化界面,适合不熟悉命令行的用户安全识别和终止进程,支持按 PID 搜索、查看 CPU/内存占用及强制退出功能。
1、打开“应用程序” → “实用工具” → “活动监视器”,或通过聚焦搜索启动。
2、点击顶部菜单栏的“查看” → 选择“所有进程,分层显示”。
3、在右上角搜索框中输入端口号(例如“:3000”或“localhost:3000”)。
4、在结果列表中找到对应进程,选中后点击左上角红色“X”按钮。
5、在弹出窗口中勾选“强制退出”,然后点击“退出进程”。
四、使用网络实用工具进行图形化端口扫描
macOS 内置的“网络实用工具”提供免命令行的可视化界面,可扫描本机所有开放的 TCP 端口及其状态,适合不熟悉终端操作的用户快速获取端口开放概览。
1、点击屏幕左上角苹果图标 ,选择“关于本机”。
2、在弹出窗口中点击“系统报告”按钮。
3、在系统报告左侧边栏底部诊断区域中,点击“网络实用工具”。
4、在打开的窗口中切换至“端口扫描”标签页。
5、在输入框中填入本机 IP 地址(可通过系统设置 > 网络查看当前连接的 IPv4 地址)。
6、点击“扫描”按钮,工具将列出所有开放 TCP 端口及对应状态(open/closed)。
五、通过 kill 命令强制终止占用进程
获得占用端口的 PID 后,可通过 kill 发送信号终止进程;-9 参数确保不可忽略的强制结束,适用于僵死或拒绝响应的进程。
1、在终端中输入以下命令,将“PID”替换为上一步查得的实际数字:kill -9 PID。
2、若权限不足导致拒绝操作,需添加 sudo 提权:sudo kill -9 PID。
3、执行后无提示即表示命令已提交,系统开始终止进程。
4、立即验证是否释放成功:lsof -i :端口号,若无输出则端口已空闲。










