Bug: gateway install fails on fresh Linux servers — execFileUtf8 clobbers systemctl stdout
OpenClaw 版本: 2026.3.2
操作系统: Ubuntu 24.04 LTS
Node: v22.22.0
问题描述
在全新的 Linux 服务器(Ubuntu 22.04/24.04)上,openclaw gateway install 命令失败。这些服务器上 systemd user services 已正确配置,但 openclaw-gateway service 尚未安装。
错误信息
Gateway service check failed: Error: systemctl is-enabled unavailable: Command failed: systemctl --user is-enabled openclaw-gateway.service
根本原因
在 dist/systemd-*.js 文件中,isSystemdServiceEnabled() 函数调用 execFileUtf8("systemctl", ["--user", "is-enabled", "openclaw-gateway.service"])。
当服务不存在时,systemctl 返回:
- 退出码:4
- stdout: "not-found\n"
- stderr: "" (空)
execFileUtf8 函数处理非零退出码时,会用 error.message 替换空的 stderr:
const stderrText = String(stderr ?? ""); resolve({ stdout: String(stdout ?? ""), stderr: stderrText || (typeof e.message === "string" ? e.message : ...), code: typeof e.code === "number" ? e.code : 1 });
这导致:
- stdout: "not-found"
- stderr: "Command failed: systemctl --user is-enabled openclaw-gateway.service" (被覆盖)
然后 readSystemctlDetail() 优先选择 stderr(truthy)而非 stdout:
() { (result. || result. || ).(); }

