openclaw磁盘空间异常耗尽主因是日志无控增长,需通过logrotate轮转、tmpfs挂载限流、启动参数限大小级别、docker日志驱动、systemd journald五种方式协同治理。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您运行OpenClaw一段时间后发现系统磁盘空间异常耗尽,尤其是/tmp或/root/.nanobot/logs目录占用激增,则很可能是日志文件未受控增长所致。以下是设置日志轮转防止磁盘空间占满的具体操作步骤:
一、配置logrotate轮转nanobot日志
logrotate是Linux系统标准日志管理工具,通过定义轮转策略可自动切割、压缩、清理旧日志,避免单个日志文件无限膨胀。该方法适用于所有使用nanobot镜像部署的OpenClaw实例,且无需修改OpenClaw源码。
1、使用vim编辑器创建专用配置文件:
vim /etc/logrotate.d/nanobot
2、在文件中写入以下配置内容:
/root/.nanobot/logs/*.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
copytruncate
create 0644 root root
}
3、保存并退出编辑器,执行手动轮转测试:
logrotate -f /etc/logrotate.d/nanobot
4、验证轮转是否生效:
ls -lh /root/.nanobot/logs/
若看到类似 nanobot.log.1.gz 和新生成的空 nanobot.log,说明配置已正确加载。
二、启用tmpfs临时日志并挂载清理策略
对于/tmp/openclaw等位于tmpfs内存文件系统的日志路径,需结合挂载参数与定时清理机制,防止内存盘被单一大日志撑爆。该方案直接作用于挂载层,响应更快,适合高频率写入场景。
1、检查当前tmpfs挂载状态:
mount | grep tmpfs
2、若/tmp为tmpfs且无自动清理,重新挂载并加入size与nr_inodes限制:
sudo mount -o remount,size=2G,nr_inodes=100k /tmp
3、创建清理脚本并赋予执行权限:
sudo tee /usr/local/bin/clean-openclaw-tmp.sh #!/bin/bash
find /tmp/openclaw/ -name "*.log" -size +100M -delete
EOF
sudo chmod +x /usr/local/bin/clean-openclaw-tmp.sh
4、添加每日定时任务:
(crontab -l 2>/dev/null; echo "0 3 * * * /usr/local/bin/clean-openclaw-tmp.sh") | crontab -
5、立即执行一次清理以验证脚本有效性:
sudo /usr/local/bin/clean-openclaw-tmp.sh
执行后应可见 /tmp/openclaw/目录下大于100MB的日志文件已被删除,且df -h /tmp显示可用空间恢复。
三、修改OpenClaw启动参数启用内置日志限流
OpenClaw v2026.3.31起支持通过CLI参数控制日志输出粒度与文件大小上限,从源头抑制日志体积增长。该方式不依赖外部工具,适配所有部署形态(本地、Docker、云实例)。
1、停止当前运行的网关服务:
openclaw gateway stop
2、使用--max-log-size和--log-level参数重启:
openclaw gateway start --max-log-size 50M --log-level warn
3、确认参数已生效:
openclaw gateway status
4、检查日志目录实际文件大小:
du -sh /root/.nanobot/logs/*.log
此时应观察到所有日志文件均不超过 50MB,且仅记录warn及以上级别事件,大幅降低冗余输出。
四、Docker部署下配置日志驱动与限制
若采用Docker容器化部署OpenClaw,应利用Docker原生日志驱动替代应用内日志写入,由宿主机统一管控,避免容器内日志失控。此方案隔离性强,便于集中审计与归档。
1、停止并删除现有容器:
docker stop openclaw-container && docker rm openclaw-container
2、使用json-file驱动并设定日志大小与数量上限启动:
docker run -d \
--name openclaw-container \
--log-driver json-file \
--log-opt max-size=20m \
--log-opt max-file=5 \
-v ~/.openclaw:/root/.openclaw \
-p 18789:18789 \
openclaw:latest
3、验证日志驱动配置:
docker inspect openclaw-container | jq '.[0].HostConfig.LogConfig'
4、查看当前容器日志实际占用:
docker system df -v | grep -A 5 openclaw-container
输出中应明确显示 max-size=20m, max-file=5,且日志总容量稳定在100MB以内。
五、通过systemd服务单元配置日志生命周期
当OpenClaw以systemd服务方式长期运行时,可借助journald集成机制实现日志自动轮转与过期清理,无需额外安装logrotate,特别适合树莓派等轻量级部署环境。
1、编辑OpenClaw服务单元文件:
sudo systemctl edit openclaw.service
2、在编辑器中添加以下journald配置段:
[Service]
StandardOutput=journal
StandardError=journal
[Journal]
MaxLevelStore=warning
MaxLevelSyslog=warning
MaxRetentionSec=7day
MaxFileSec=1day
SystemMaxUse=100M
3、重载systemd配置并重启服务:
sudo systemctl daemon-reload && sudo systemctl restart openclaw.service
4、查询journald当前日志用量:
journalctl --disk-usage
结果中应显示 SystemMaxUse=100M已生效,且历史日志按天分割、7日内保留,超出部分自动清除。











