首页 教程 分类 Skills下载 关于
ZH EN JA KO
安装部署

用systemd管理OpenClaw后台服务

· 8 分钟

为什么需要systemd管理

当你在Linux服务器上安装好OpenClaw后,直接在终端运行openclaw start虽然可以工作,但存在几个问题:关闭SSH连接后进程会终止、服务器重启后需要手动启动、崩溃后无法自动恢复。systemd是现代Linux系统的标准服务管理器,可以完美解决这些问题。

本文将详细介绍如何通过systemd将OpenClaw配置为一个可靠的后台服务,实现开机自启、崩溃自动重启和日志集中管理。

前置条件

  • 已安装OpenClaw(通过npm install -g openclaw@latest或官方安装脚本)
  • 已完成openclaw onboard初始化配置
  • Linux系统使用systemd(Ubuntu 16.04+、Debian 9+、CentOS 7+、Fedora等)

自动安装方式

OpenClaw提供了自动配置守护进程的命令。在Linux系统上,它会自动创建systemd服务:

openclaw onboard --install-daemon

如果你在初始引导时已经执行过此命令,systemd服务可能已经配置好了。可以通过以下命令检查:

systemctl status openclaw

如果服务已存在且运行正常,那么你可以跳过手动配置部分,直接阅读后面的管理和优化章节。

手动创建systemd服务

如果自动安装未生效,或者你希望自定义配置,可以手动创建systemd服务文件。

确认OpenClaw路径

首先确认OpenClaw可执行文件的位置:

which openclaw

通常结果为/usr/bin/openclaw/usr/local/bin/openclaw。记下这个路径,后面会用到。

同时确认你运行OpenClaw的用户名和家目录:

echo $USER
echo $HOME

创建服务文件

使用你喜欢的编辑器创建systemd服务文件:

sudo nano /etc/systemd/system/openclaw.service

写入以下内容:

[Unit]
Description=OpenClaw AI Agent Gateway
Documentation=https://openclaw.ai/docs
After=network-online.target
Wants=network-online.target

[Service]
Type=simple
User=你的用户名
Group=你的用户名
WorkingDirectory=/home/你的用户名
ExecStart=/usr/local/bin/openclaw start
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
RestartSec=5
StartLimitBurst=5
StartLimitIntervalSec=60

# 环境变量
Environment=NODE_ENV=production
Environment=HOME=/home/你的用户名

# 安全加固
NoNewPrivileges=yes
ProtectSystem=strict
ProtectHome=read-only
ReadWritePaths=/home/你的用户名/.openclaw

# 资源限制
LimitNOFILE=65536
MemoryMax=1G

# 日志
StandardOutput=journal
StandardError=journal
SyslogIdentifier=openclaw

[Install]
WantedBy=multi-user.target

将上面的"你的用户名"替换为你实际的Linux用户名。如果OpenClaw安装路径不同,也需要相应修改ExecStart中的路径。

配置说明

这份服务文件中有几个关键配置值得解释:

  • Restart=alwaysRestartSec=5:服务崩溃后每5秒自动重启,确保高可用
  • StartLimitBurst=5StartLimitIntervalSec=60:60秒内最多重启5次,防止无限重启循环
  • ProtectSystem=strictProtectHome=read-only:安全加固选项,限制服务的文件系统写入权限
  • ReadWritePaths:明确允许写入OpenClaw配置目录~/.openclaw
  • LimitNOFILE=65536:提高文件描述符限制,适应高并发连接场景

启用和管理服务

加载并启动服务

sudo systemctl daemon-reload
sudo systemctl enable openclaw
sudo systemctl start openclaw

enable命令将服务设为开机自启,start命令立即启动服务。

常用管理命令

查看服务状态:

sudo systemctl status openclaw

停止服务:

sudo systemctl stop openclaw

重启服务:

sudo systemctl restart openclaw

重新加载配置(不中断服务):

sudo systemctl reload openclaw

取消开机自启:

sudo systemctl disable openclaw

日志管理

systemd通过journald统一管理服务日志。以下是常用的日志查看命令。

实时跟踪日志输出:

journalctl -u openclaw -f

查看最近100行日志:

journalctl -u openclaw -n 100

查看今天的日志:

journalctl -u openclaw --since today

查看特定时间范围的日志:

journalctl -u openclaw --since "2026-03-14 08:00:00" --until "2026-03-14 18:00:00"

按优先级过滤(只看错误):

journalctl -u openclaw -p err

运行诊断

服务启动后,建议运行OpenClaw的内置诊断工具:

openclaw doctor

该命令会检查Node.js版本是否满足22+的要求、配置文件~/.openclaw/openclaw.json是否完整、各聊天平台连接是否正常、网络可达性等关键项目。

配置文件更新

当你修改了~/.openclaw/openclaw.json配置文件后,需要重启服务使更改生效:

sudo systemctl restart openclaw

多实例运行

如果你需要在同一台服务器上运行多个OpenClaw实例(例如生产和测试环境),可以使用systemd的模板实例功能:

sudo cp /etc/systemd/system/openclaw.service /etc/systemd/system/[email protected]

修改模板文件,将固定路径替换为实例参数化路径,然后分别启动不同实例:

sudo systemctl start openclaw@production
sudo systemctl start openclaw@staging

故障排查

如果服务无法启动,按以下步骤排查:

  1. 检查日志:journalctl -u openclaw -n 50 --no-pager
  2. 手动运行确认能否正常工作:openclaw start
  3. 检查权限:确保服务用户有权读写~/.openclaw/目录
  4. 检查端口占用:ss -tlnp | grep 3000
  5. 检查Node.js版本:node --version(必须22+)

总结

通过systemd管理OpenClaw服务,你可以获得企业级的服务可靠性——开机自启、崩溃自恢复、集中式日志管理。配合安全加固选项和资源限制,这套配置适用于生产环境的长期稳定运行。

OpenClaw 是开源免费的个人AI助手,支持 WhatsApp、Telegram、Discord 等多平台接入