“Address already in use”报错表明端口被占用,需先定位进程:用lsof -P -n -i :端口查指定端口;用sudo ss -tulnp或sudo netstat -tulnp全局扫描;支持lsof批量查多端口;macOS可用活动监视器图形化强制退出。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你在终端里运行服务时遇到“Address already in use”报错,说明目标端口正被其他进程监听,必须先定位并确认占用者才能继续调试或启动新服务。
用 lsof 精准查指定端口
这是 macOS 和 Linux(含统信UOS)最直接的方法,无需安装额外工具,输出包含进程名、PID、用户和协议状态。
打开终端,输入:lsof -i :端口号,把“端口号”替换成你要查的数字,比如 lsof -i :3000。
若命令无任何输出,说明该端口当前空闲;若有输出,重点关注 【PID】 列——那是进程唯一标识,后续终止操作全靠它。
为避免 DNS 解析拖慢响应或显示别名干扰判断,建议加参数提速:lsof -P -n -i :端口号。这一步跳过主机名和服务名解析,结果更干净。
用 ss 或 netstat 全局扫描监听端口
当你不确定具体端口号,或想一次性看清所有活跃监听端口时,用这两个命令更高效。ss 是现代推荐工具,netstat 在部分旧系统仍可用。
方法一(推荐):执行 sudo ss -tulnp,列出全部 TCP/UDP 监听端口及对应进程完整路径。
方法二:若 ss 不可用,改用 sudo netstat -tulnp。注意:-p 参数需 root 权限才能显示非本用户进程,不加 sudo 可能漏掉关键信息。
查特定端口时,直接管道过滤:sudo ss -tulnp | grep ':8080'。输出中 “Process” 字段会直接显示进程名与 PID,不用再二次查。
通过本地 Codex 或 OpenClaw OAuth 凭证直接调用 ChatGPT/Codex Responses 的 image_generation 工具来生成或编辑光栅图像,然后保存
用 lsof 批量检查多个开发常用端口
前端或后端开发常同时跑多个服务(如 React 3000、Flask 5000、Vue 8080),逐条查太慢,一条命令就能覆盖。
第一步:在终端输入 lsof -i :3000 -i :5000 -i :8080,支持任意数量 -i :端口 组合。
第二步:观察每行输出的 COMMAND 和 PID 列。如果某端口没结果,就代表它当前空闲。
第三步:若发现多个进程分别占了不同端口,可快速比对是否为预期服务——比如 【node 占 3000 而 【python 占 5000 是正常现象;但两个 node 同时占 3000 就要警惕残留进程。
图形化辅助:活动监视器定位并强制退出
如果你不习惯命令行,或想直观看到进程资源占用情况,macOS 自带的活动监视器能图形化完成端口排查。
打开“聚焦搜索”,输入“活动监视器”并回车。
点击顶部菜单栏“查看” → “所有进程”,确保没被过滤。
在右上角搜索框输入进程名(如 node、python、java),快速定位疑似服务。
选中进程 → 点击左上角“X”按钮 → 选择“强制退出”。这一步会立即释放其绑定的所有端口。

















