修改 runtimemaxuse 可限制 /run/log/journal 中日志总量,仅作用于运行时日志(不控 /var/log/journal),需配合 storage=volatile、runtimemaxfiles 等参数协同管理,并通过 journalctl --disk-usage 验证效果。

修改 journald.conf 中的 RuntimeMaxUse 可以限制 systemd-journald 在内存(/run/log/journal)中保存的日志数据总量,从而防止日志无节制增长占用过多内存。但需注意:RuntimeMaxUse 仅控制运行时日志(即存储在 /run 下的 volatile 日志),不作用于持久化日志(/var/log/journal)。
确认日志存储模式与当前路径
systemd-journald 默认将日志写入 /run/log/journal(易失性,重启丢失)。若启用了持久化(如创建了 /var/log/journal 目录),journald 会同时写入两者,但 RuntimeMaxUse 仅约束 /run 下的部分。
- 运行
journalctl --disk-usage查看当前各路径用量(例如显示 “Persistent: 124.5M” 和 “Runtime: 8.2M”) - 检查
/var/log/journal是否存在:存在则说明已启用持久化;否则所有日志都在/run,此时 RuntimeMaxUse 才真正影响全部日志体积
设置 RuntimeMaxUse 的正确方式
编辑配置文件并重载服务:
- 打开
/etc/systemd/journald.conf - 取消注释或添加行:
RuntimeMaxUse=64M(支持单位 K、M、G,如128M或512K) - 保存后执行:
sudo systemctl kill --signal=SIGUSR1 --kill-who=main systemd-journald(触发日志轮转与配额应用),或更稳妥地:sudo systemctl restart systemd-journald - 验证生效:
journalctl --disk-usage中 “Runtime” 行数值应趋于稳定,且不会显著超过设定值
配合其他参数避免日志堆积
单靠 RuntimeMaxUse 不足以彻底控量,建议同步调整相关参数:
-
RuntimeMaxFiles=10:限制/run/log/journal下最大日志文件数(防碎片化) -
MaxRetentionSec=3d:即使在内存中,也按时间淘汰旧日志(需与 RuntimeMaxUse 共同作用) -
Storage=volatile:若不需要重启后保留日志,可显式设为 volatile,确保所有日志只存于/run,使 RuntimeMaxUse 完全覆盖管理范围
常见误区提醒
RuntimeMaxUse 不是硬实时上限。journald 按需清理,通常在下次日志写入或收到 SIGUSR1 时触发回收。若观察到实际占用略超设定值(如设 64M 却达 72M),属正常行为——它保证“长期趋近且不持续膨胀”,而非每字节精确卡死。











