journalctl --vacuum-size 是一次性清理命令,不能设置全局日志上限;真正防止磁盘爆满需组合临时清理、永久配置(修改journald.conf中SystemMaxUse等参数)和定时保障(crontab定期执行vacuum)。

journalctl --vacuum-size 并不能设置“全局日志上限”,它只是一次性清理命令,作用是立即删减日志体积到指定大小(比如 sudo journalctl --vacuum-size=100M),但不会阻止后续日志继续增长。真正实现“防止系统分区爆满”的关键,在于组合使用临时清理 + 永久配置 + 定期保障三个环节。
先确认日志是否已持久化并查看当前占用
很多系统默认只将日志存于内存(重启即丢),/var/log/journal 目录为空,此时无需担心磁盘膨胀。执行以下命令验证:
- journalctl --disk-usage —— 若显示 “No journal files were found.”,说明未启用持久化,需先配置;
- 若显示类似 “Archived and active journals take up 2.1G”,说明日志已在磁盘落盘,必须干预;
- 补充检查:ls /var/log/journal/ 应有非空子目录(通常为机器ID命名)。
用 --vacuum-size 快速释放空间(临时手段)
这是最直接的救急操作,适合磁盘已告急时立即执行:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- sudo journalctl --vacuum-size=100M:保留最新、最紧凑的 100MB 日志(自动压缩+删除旧归档);
- 可叠加时间限制:sudo journalctl --vacuum-size=100M --vacuum-time=7d,journald 会取两者中更严格的结果(例如实际只保留够 100MB 的最近日志);
- 执行后务必再运行 journalctl --disk-usage 确认效果,输出应明显下降。
通过 journald.conf 设置真正有效的永久上限
仅靠 vacuum 命令无法一劳永逸。必须修改配置文件,让 systemd-journald 主动限制写入行为:
- 编辑 /etc/systemd/journald.conf,取消以下几行的注释并设值(推荐起始值):
- SystemMaxUse=100M —— 限定 /var/log/journal 下所有日志总大小上限;
- MaxFileSec=7day —— 单个日志文件最多存 7 天,避免单个大文件长期不轮转;
- SystemMaxFileSize=50M(可选)—— 防止单个日志文件过大,加快 vacuum 效率;
- 保存后执行:sudo systemctl restart systemd-journald,配置立即生效。
加一层定时保障:用 crontab 防止配置失效或漏触发
即使配置了 SystemMaxUse,极端情况下(如 journald 异常、磁盘 I/O 延迟)仍可能短暂超限。建议每小时强制执行一次真空清理:
- 新建脚本:/root/cleaner/journal.sh,内容为:
- #!/bin/bash
- journalctl --vacuum-size=100M > /dev/null 2>&1
- 添加定时任务:crontab -e,加入:
- 0 */1 * * * /root/cleaner/journal.sh

















