OpenClaw启动报“bind failed”是端口被占用所致,需先确认默认端口(如6666)并用lsof或netstat查PID,再安全终止冲突进程;若不可杀,则改用--port参数或配置文件切换至未占端口。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

OpenClaw启动时弹出“bind failed”错误,说明程序尝试绑定的网络端口已被其他进程占用,无法完成监听——这不是配置错误,而是系统级资源抢占问题,必须先释放端口才能继续。
确认OpenClaw默认端口与实际冲突端口
OpenClaw默认监听端口为 【6666】,但部分部署会修改为 8080、9000 或自定义端口。启动失败时终端通常会附带具体报错,例如 bind failed: Address already in use on port 6666。若未明确提示,需查阅 OpenClaw 配置文件(如 config.yaml 或 settings.json)中 port 或 listen_port 字段值。
这一步不能跳过:盲目杀进程可能中断数据库、调试服务或容器代理,必须先锁定真实端口号。
查找并定位占用该端口的进程
方法一:用 lsof 直接查(推荐,信息最全)→ 执行:sudo lsof -i :6666
方法二:用 netstat 交叉验证 → 执行:sudo netstat -tulnp | grep ':6666'
注意:两个命令输出中,PID 列对应进程编号,COMMAND 列显示进程名(如 node、python3、java 或 docker-proxy)。若命令未找到,先安装:sudo apt install lsof net-tools。
终止占用进程或释放端口
第一步:确认进程是否可安全终止。查看 COMMAND 和 USER 列——如果是你本人启动的测试服务、已遗忘的后台 npm start 或孤立的 python server.py,可继续;若是 mysqld、redis-server 或 dockerd,切勿直接 kill。
第二步:强制终止指定 PID 进程 → 执行:sudo kill -9 12345(将 12345 替换为上一步查到的真实 PID)
第三步:验证端口是否真正释放 → 再次运行 sudo lsof -i :6666,若无任何输出,说明端口空闲。
如果 lsof 无输出但 OpenClaw 仍报 bind failed,请检查是否存在 【TIME_WAIT 状态残留】:执行 ss -tan | grep ':6666',若看到大量 TIME-WAIT 行,等待 2~4 分钟再试,或临时启用 SO_REUSEADDR(需修改 OpenClaw 源码 socket 初始化部分)。
临时绕过冲突:改用备用端口启动
方法1:命令行参数覆盖 → 启动时加 --port 6667(或其他未被占用端口),例如:./openclaw --port 6667
方法2:修改配置文件 → 将 port: 6666 改为 port: 6667,保存后重启服务。
方法3:检查防火墙是否拦截新端口 → 若改端口后客户端连不上,运行 sudo ufw status,确保新增端口已放行(如:sudo ufw allow 6667)。


















