我将日志设置为将日志大小限制为 5GB,/etc/systemd/journald.conf
并认为一切都很好。然后,昨天,我意识到我的/var/log/syslog
文件实际上有 12GB 大。
我相信的是journalctl
从不同的日志位置读取消息,并且该SystemMaxUse
选项旨在限制它们的大小。但看起来,事实并非如此。
我现在最终使用了 logrotate 和 size 选项,但我更愿意了解这个概念以供将来使用。
看起来我还没有真正理解日志是如何/var/log
与journald/journalctl纠缠在一起的。请赐教!
答案1
systemd-journald
还写在/run/log/journal
.
--flush
如果启用了持久存储,则要求日志守护进程将存储在的所有日志数据刷新
/run/log/journal/
到 中。/var/log/journal/
在操作完成之前,此调用不会返回。
请注意,此调用是幂等的:数据仅在系统运行时期间刷新/run/log/journal/
一次/var/log/journal/
(但见--relinquish-var
下文),并且如果已经发生这种情况,则此命令会干净地退出而不执行任何操作。该命令有效保证了/var/log/journal/
返回时所有数据都被刷新。
--relinquish-var
要求日志守护进程进行相反的操作
--flush
:如果请求,守护进程将进一步写入日志数据/run/log/journal/
并停止写入/var/log/journal/
。随后调用 会--flush
导致日志输出切换回/var/log/journal/
,请参见上文。
答案2
日志限制(SystemMaxUse
) 仅对journald 进行限制自己的文件在/var/log/journal
.它不知道也不关心其他日志文件。这是其他应用程序的责任。