为什么需要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=always和RestartSec=5:服务崩溃后每5秒自动重启,确保高可用
- StartLimitBurst=5和StartLimitIntervalSec=60:60秒内最多重启5次,防止无限重启循环
- ProtectSystem=strict和ProtectHome=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
故障排查
如果服务无法启动,按以下步骤排查:
- 检查日志:
journalctl -u openclaw -n 50 --no-pager - 手动运行确认能否正常工作:
openclaw start - 检查权限:确保服务用户有权读写
~/.openclaw/目录 - 检查端口占用:
ss -tlnp | grep 3000 - 检查Node.js版本:
node --version(必须22+)
总结
通过systemd管理OpenClaw服务,你可以获得企业级的服务可靠性——开机自启、崩溃自恢复、集中式日志管理。配合安全加固选项和资源限制,这套配置适用于生产环境的长期稳定运行。