接上一篇提到的 journalctl 的另一个参数:
--disk-usage
复制
初次见面,需要遵守程序员基本礼仪:
man journalctl
复制
找到 --disk-usage 部分:
--disk-usage 展示了当前所有日志文件所占用的磁盘空间。既包括了所有的存档日志文件,也包括了所有活跃日志文件。
看到了这里,就可以联想到上一篇文章,为什么说vaccum参数和rotate参数结合使用,疗效才更好。因为rotate参数可以暂时把活跃文件清零,这样只能影响存档文件的vacuum参数目标生效后,存档文件的大小才能无限接近 --disk-usage 的显示结果。
光说不练假把式,我们来实际看看效果。
最初我们的日志文件合计有300M。
结合 --rotate 和 --vacuum-size=250M,移除最老旧的一些日志文件,从而使得存档文件的容量总和低于 250M 。
之后再通过 --disk-usage 参数去查看清理后的日志文件容量总和:
248M,非常接近于我们设置250M的目标。
到这里,也许你以为关于journal日志文件的容量啊,存储啊,都已经讲完了。
但其实还没有。
我们来看这个命令参数:
--flush
复制
如果持久化存储选项被启用的话,这个参数会让journal守护线程把 /run/log/journal/ 中的日志数据都放到 /var/log/journal/ 中去。使用本参数的命令调用会在操作完成之后,才返回。注意这个命令调用是幂等的:在系统运行时间内,数据从 /run/log/journal/ 放进 /var/log/journal 这个操作,只会做一次,如果已经做过了,那么这个命令会不做任何操作直接返回。这个命令有效地保证了在命令返回的时候,所有的数据都放入了 /var/log/journal 。
看到这里,不禁想问:日志还会放在 /run/log/journal 中?
可是,如果我使用 du 命令去查看 /var/log/journal/ 路径的容量的话:
du /var/log/journal/ -hs
复制
对比运行 --disk-usage 所显示的容量大小的话,
已经完全一致了呀。(图片中的结果相差了1M,考虑到 /var/log/journal/ 中存放了额外的文件路径等元数据,所以比文件本身大是可以理解的)
到底是 journalctl --disk-usage 显示的结果没有包含 /run/log/journal 中的日志文件,还是文档错了呢?
欲知后事如何,请听下回分解。