macOS端口被占用时,可用lsof精准查询PID、netstat全局扫描LISTEN端口、活动监视器图形化终止、网络实用工具扫描开放端口,或用组合命令批量kill。

如果您在 macOS 上启动服务时提示“端口已被占用”,则可能是某个后台进程正在监听该端口。以下是查询并定位占用端口进程的具体操作步骤:
一、使用 lsof 命令精确查询指定端口占用
lsof(List Open Files)将网络端口视为特殊文件进行管理,可直接输出占用目标端口的进程名称、PID、用户及协议状态,是 macOS 下最精准的端口排查方式。
1、按下 Command + 空格 打开聚焦搜索,输入“终端”并回车启动。
2、在终端中输入以下命令,将端口号替换为实际需要检查的数字(例如 3000):lsof -i :端口号。
3、若需跳过 DNS 解析以提升响应速度并避免主机名混淆,使用增强参数:lsof -P -n -i :端口号。
4、执行后,若端口被占用,将输出包含 COMMAND、PID、USER、NAME 的表格行;其中 PID 列数值即为进程唯一标识符。
5、若命令无任何输出,则说明该端口当前处于空闲状态,未被任何进程监听。
二、使用 netstat 配合 grep 全局扫描监听端口
netstat 提供系统级网络连接快照,适用于不确定具体端口号但需全面排查 LISTEN 状态端口的场景,尤其可验证 lsof 结果或补充精简环境下的诊断能力。
1、在终端中输入以下命令,列出所有 TCP 协议下处于 LISTEN 状态的端口:netstat -anp tcp | grep LISTEN。
2、如需快速定位某端口(例如 8080),直接追加过滤条件:netstat -anp tcp | grep 8080。
3、观察输出中的 Local Address 字段,若出现 *:8080 或 127.0.0.1:8080 且状态为 LISTEN,则确认该端口正被监听。
4、为获取对应进程 PID,可进一步执行:sudo lsof -iTCP -sTCP:LISTEN | grep 8080。
三、通过活动监视器图形化定位并终止进程
活动监视器提供可视化界面,支持按 PID 或进程名快速筛选,适合不熟悉命令行的用户安全识别、查看资源占用详情,并执行强制退出操作。
1、打开“应用程序” → “实用工具” → “活动监视器”,或通过聚焦搜索启动。
2、点击顶部标签栏的“搜索框”,输入从 lsof 或 netstat 获取的 PID 数字(例如 12345)。
3、搜索结果自动高亮匹配进程;双击该进程,或点击右上角 信息按钮(i 图标) 查看其完整路径、启动参数及打开的文件。
4、选中该进程后,点击左上角 X 按钮,在弹出窗口中选择“强制退出”。
四、使用系统报告中的网络实用工具扫描本机开放端口
网络实用工具提供图形化端口扫描功能,无需命令行即可直观查看本机对外暴露的 TCP 端口列表,适用于基础安全自查与非技术用户初步诊断。
1、点击屏幕左上角的苹果菜单 ,选择“关于本机”。
2、在弹出窗口中点击“系统报告”按钮。
3、在系统报告左侧边栏底部找到“诊断”区域,点击“网络实用工具”。
4、在打开的窗口中,选择“端口扫描”标签页。
5、在输入框中填入本机 IP 地址(可通过“系统设置”→“网络”查看当前连接的 IPv4 地址)。
6、点击“扫描”按钮,工具将列出所有检测到的开放 TCP 端口及其状态。
五、批量终止所有占用某端口的进程
当同一端口被多个子进程或残留实例占用时,单次 kill 可能无法完全释放;组合命令可一次性提取并终止全部匹配进程,避免反复手动操作。
1、在终端中执行以下命令,将port替换为实际端口号(例如 3000):lsof -P | grep ':port' | awk '{print $2}' | xargs kill -9。
2、若提示权限不足,改用提权版本:sudo lsof -P | grep ':port' | awk '{print $2}' | xargs sudo kill -9。
3、执行后无提示即表示命令已提交;立即验证是否释放成功:lsof -i :port,若无输出则端口已空闲。










