遇到【EADDRINUSE 或 Port 18789 is already in use】报错时,需以管理员身份运行PowerShell,用netstat定位PID后taskkill强制终止占用进程,并检查关联连接状态,必要时结合openclaw gateway stop或按profile分别停止网关。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你在启动 OpenClaw 时看到 【EADDRINUSE 或 Port 18789 is already in use】 报错,说明系统里已有程序正在使用这个端口,必须先定位并关闭它才能正常启动网关服务,否则每次运行都会卡在监听失败这一步。
快速定位并强制关闭占用进程
这一步适用于 Windows 环境,操作直接、见效快,不需要修改任何配置文件。
第一步:打开 PowerShell(**必须以管理员身份运行**),输入命令:
netstat -ano | findstr :18789
你会看到类似这样的输出:
TCP 0.0.0.0:18789 0.0.0.0:0 LISTENING 12345
最后一列数字 12345 就是占用端口的进程 ID(PID),记下来。
第二步:执行强制终止命令,把 12345 替换成你查到的实际 PID:
taskkill /F /PID 12345
如果提示“成功终止进程”,说明端口已释放。再运行一次 netstat 命令确认输出为空,就表示清理干净了。
第三步:重新启动 OpenClaw:
openclaw start
检查是否还有残留关联进程
有时只杀掉主监听进程还不够,比如有子进程或连接态会话仍在维持通信,会导致端口无法真正释放。
运行以下命令查看所有与 18789 相关的连接状态:
netstat -ano | findstr 18789
如果输出不止一行,尤其是出现 ESTABLISHED、TIME_WAIT 或 CLOSE_WAIT 状态,说明还有其他 PID 在参与通信。
把这些 PID 全部找出来,逐个执行:
taskkill /F /PID [对应数字]
【注意:不要跳过这一步——哪怕只漏一个关联 PID,端口仍可能被锁死】
用 OpenClaw 自带命令停止网关(优先尝试)
如果你确定当前运行的是 OpenClaw 自身的网关进程,而不是其他软件占用了端口,最稳妥的方式是先用官方命令优雅退出。
方法一:执行停止指令
openclaw gateway stop
方法二:如果该命令无响应或报错,说明进程已僵死,此时必须退回上一节用 taskkill 强制清理。
方法三:检查是否有多个 profile 同时运行,比如你启用了 dev 和 prod 两个环境,它们可能都试图绑定 18789。
先列出所有 profile:
openclaw profile list
再针对每个 profile 单独停止:
openclaw --profile dev gateway stop
openclaw --profile prod gateway stop


















