不能手动删除 /var/log/journal/ 下的 .journal 文件,必须用 journalctl --vacuum-* 清理或修改 /etc/systemd/journald.conf 并重启 systemd-journald 服务;因手动删除会破坏索引导致报错、写入失败及空间无法释放,而 --vacuum-size 和 --vacuum-time 可安全按大小或时间清理,配置 SystemMaxUse 等参数并重启服务才能实现永久限制。

不能手动删除 /var/log/journal/ 下的 .journal 文件。这些是 systemd-journald 管理的结构化二进制日志,内部有索引和关联关系。直接 rm 会导致 journalctl 报错、新日志写入失败、服务异常,甚至重启后空间仍不释放。
用 journalctl --vacuum-* 安全清理过期日志
这是唯一推荐的手动清理方式,原子、安全、立即生效:
- 查看当前占用:
journalctl --disk-usage - 保留最新 500MB(自动删最旧):
sudo journalctl --vacuum-size=500M - 保留最近 7 天的日志:
sudo journalctl --vacuum-time=7d - 同时使用两项(取更严条件):
sudo journalctl --vacuum-size=300M --vacuum-time=14d - 执行后务必再运行
journalctl --disk-usage确认空间已回收
配置永久过期策略避免反复清理
仅靠手动清理治标,修改配置才能治本:
- 编辑
/etc/systemd/journald.conf,确保以下行取消注释并设值: -
Storage=persistent(启用持久化存储) -
SystemMaxUse=500M(整个 journal 目录最大占用) -
SystemMaxFileSize=100M(单个日志文件轮转阈值) -
MaxRetentionSec=1week(超时自动清理,也支持30d、1month等写法) - 保存后必须重启服务:
sudo systemctl restart systemd-journald - 验证是否生效:
sudo systemd-analyze cat-config systemd/journald.conf | grep -E "(MaxUse|MaxFileSize|Retention)"
哪些“看起来像碎片”的文件也不能碰
journald 不产生无用碎片,所有带 .journal 或 .journal~ 后缀的文件都受其严格管理:
-
system@*.journal~或user-*.journal~:不是备份,是正在写入的临时文件,删了会中断日志记录 -
/run/log/journal/下的文件:内存日志,重启即消失,无需处理且通常无权写入 - 带
@符号或波浪线的文件:全部属于 journald 自动归档与轮转机制的一部分
紧急腾空间可配合其他日志类型处理
当 /var/log/journal 占用过大,且需快速释放磁盘时,可同步处理其他日志:
- 清空大文本日志(保留 inode,不破坏服务写入):
sudo truncate -s 0 /var/log/syslog、sudo truncate -s 0 /var/log/kern.log - 删除旧压缩归档:
sudo find /var/log -name "*.log.[0-9].gz" -mtime +30 -delete - 注意:不要对
/var/log/journal/做find ... -delete,风险同直接 rm

















