Mac端口被占时,可用lsof精准查PID、netstat全局扫描、网络实用工具图形化检测、活动监视器交叉验证,再用kill -9释放端口。

如果您在Mac上运行服务时遇到“端口已被占用”或“Address already in use”错误,说明该端口正被其他进程监听。以下是多种可靠方法,用于准确识别并释放被占用的端口。
一、使用lsof命令精确查询指定端口占用
lsof(List Open Files)是macOS原生工具,将网络端口视为打开的文件资源,可直接显示占用目标端口的进程名、PID、用户及协议类型,结果精准且无需安装额外组件。
1、按下 Command + 空格 打开聚焦搜索,输入“终端”并回车启动。
2、输入以下命令,将端口号替换为实际数字(例如8080):
sudo lsof -i :端口号
3、若端口被占用,输出中将显示COMMAND(进程名)、PID(进程ID)、USER(所属用户)三列关键信息。
4、为提升查询效率并避免DNS解析延迟,推荐使用增强参数:
lsof -P -n -i :端口号
二、使用netstat命令扫描所有监听中的TCP端口
netstat提供系统级网络连接快照,适合在未知具体端口号时全局排查所有处于LISTEN状态的端口,尤其适用于调试本地开发服务器冲突场景。
1、在终端中执行:
sudo netstat -anvp tcp | grep LISTEN
2、逐行检查输出中的Local Address列,定位含目标端口号的条目(如 *:3000 或 127.0.0.1:3000)。
3、记录对应行末尾的PID/Program name字段中的数字,即为占用进程ID。
4、进一步确认该PID对应的程序全名,执行:
ps -p PID -o comm=(将PID替换为实际数值)
三、通过网络实用工具进行图形化端口扫描
macOS内置的“网络实用工具”提供免命令行的可视化界面,可扫描本机所有开放的TCP端口及其状态,适合不熟悉终端操作的用户快速获取端口开放概览。
1、点击屏幕左上角苹果图标,选择关于本机。
2、在弹出窗口中点击系统报告按钮。
3、在系统报告左侧边栏底部诊断区域中,点击网络实用工具。
4、在打开的窗口中切换至端口扫描标签页。
5、在输入框中填入本机IP地址(可通过系统设置 > 网络查看当前连接的IPv4地址)。
6、点击扫描按钮,工具将列出所有开放TCP端口及对应状态(open/closed)。
四、使用活动监视器交叉验证并终止可疑进程
活动监视器虽不直接显示端口绑定关系,但可通过实时网络吞吐量排序与PID反查,辅助判断高流量进程是否正在监听端口,降低误杀系统关键进程的风险。
1、打开“应用程序 > 实用工具 > 活动监视器”。
2、点击顶部网络标签页,按发送字节或接收字节列排序,识别持续高网络活动的进程。
3、选中该进程,点击右上角信息按钮(i 图标),查看其完整路径、启动参数及打开的文件列表。
4、返回终端,执行:
lsof -i -P -n -sTCP:LISTEN | grep 进程名,交叉验证其是否确实在监听端口。
五、终止占用端口的进程并释放资源
在通过前述任一方法获得占用端口的进程PID后,可采用命令行或图形界面方式强制结束该进程,从而立即释放端口供新服务使用。
1、在终端中输入以下命令,将PID替换为实际进程号:
sudo kill -9 PID
2、执行后无提示即表示命令已提交,等待系统响应。
3、重新运行lsof -i :端口号命令,确认输出为空,表明端口已无进程占用。
4、若需一次性终止所有占用某端口的进程(如多个子进程),可使用组合命令:
lsof -P | grep ':端口号' | awk '{print $2}' | xargs kill -9(请将“端口号”替换为实际数字)










