journald日志清理需先用journalctl --disk-usage查看占用量,再通过--vacuum-time/--vacuum-size等临时清理或配置journald.conf中SystemMaxUse、MaxRetentionSec等参数实现永久限制,并建议定期验证与排查高频日志源。

在 Linux 系统中,journald 默认将日志持久化存储在 /var/log/journal/ 目录下,长期运行后可能占用数 GB 甚至更多磁盘空间。使用 journalctl --disk-usage 可快速查看当前日志占用量,再结合保留策略清理冗余数据,是释放空间最直接有效的方式。
查看当前日志磁盘占用量
执行以下命令即可显示所有 journal 日志文件的总大小:
journalctl --disk-usage
输出类似:
Archived and active journals take up 1.2G in the file system.
若提示 No journal files were found.,说明日志未启用持久化(默认只存内存),需先配置 /etc/systemd/journald.conf 并重启服务。
临时清理:按大小或时间限制手动删除
不修改配置的前提下,可立即释放空间:
-
仅保留最近 2 周日志:
journalctl --vacuum-time=2w -
仅保留最多 500MB 日志:
journalctl --vacuum-size=500M -
保留最多 3 个归档(按轮转):
journalctl --vacuum-files=3
上述命令会自动压缩旧日志、删除超出限制的部分,并打印清理结果(如 “Vacuuming done, freed 845.2M of archived journals”)。
Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...
永久限制:配置 journald 自动管理策略
编辑主配置文件防止日志再次暴增:
sudo nano /etc/systemd/journald.conf
取消注释并修改以下关键项(单位支持 K、M、G、s、min、h、days):
-
Storage=auto(确保启用持久化;若为
volatile则日志仅存内存) - SystemMaxUse=500M(系统日志总上限)
- SystemKeepFree=1G(至少保留 1GB 空闲空间才允许写入)
- MaxRetentionSec=2week(最长保留 2 周)
- MaxFileSec=1day(单个日志文件最多存 1 天,利于轮转)
保存后重启服务生效:sudo systemctl restart systemd-journald
验证与日常维护建议
清理后建议做两件事:
- 用
journalctl --disk-usage再次确认空间已释放 - 检查是否有异常高频日志源:
journalctl -n 100 --no-pager | awk '{print $3}' | sort | uniq -c | sort -nr | head -10(查看前 10 个高频服务名) - 对反复刷屏的服务(如某个失败的 unit),可用
systemctl mask xxx.service或修复其配置,避免日志污染
定期执行 journalctl --vacuum-time=30d 作为运维脚本的一部分,比依赖配置更可控。










