大/var/log/journal?

Bri*_*tow 77 cleanup disk-usage systemd-journald 20.04

我不明白为什么/var/log/journal/文件夹这么大。

例如,通过执行命令systemctl -f,我看到了填充。如果我在 Thunderbird 上点击一封电子邮件,它会生成几十行我认为无用的行。

目前,我du -h /var/log/journal/在 1 天内生成了超过 1.5GB ( )!

有没有一种方法可以在不停止日志记录的情况下显着减少此日志?

Jos*_*Jos 82

您可以通过以下命令减小日志的大小:

journalctl --vacuum-size=100M
Run Code Online (Sandbox Code Playgroud)

这将保留最近的 100M 数据。

journalctl --vacuum-time=10d
Run Code Online (Sandbox Code Playgroud)

将删除除最后 10 天之外的所有内容。

来自man journalctl

--vacuum-size=, --vacuum-time=, --vacuum-files= 删除最旧的归档日志文件,直到它们使用的磁盘空间低于指定大小(用通常的“K”、“M”、“G”和“T”后缀指定),或者所有归档的日志文件不包含早于指定的时间跨度(使用通常的“s”、“m”、“h”、“days”、“months”、“weeks”和“years”后缀指定),或者不超过指定数量的单独日志文件. 请注意,运行 --vacuum-size= 仅对 --disk-usage 显示的输出产生间接影响,因为后者包括活动日志文件,而吸尘操作仅对存档的日志文件进行操作。相似地,

--vacuum-size=、--vacuum-time= 和--vacuum-files=可以在单个调用中组合,以对存档的日志文件实施大小、时间和文件数量限制的任意组合。将这三个参数中的任何一个指定为零相当于不强制执行特定限制,因此是多余的。

这三个开关也可以与 --rotate 组合成一个命令。如果是,则首先轮换所有活动文件,然后立即执行请求的清理操作。轮换的效果是所有当前活动的文件都被归档(并且可能是新的、空的日志文件作为替换打开),因此清理操作的效果最大,因为它可以考虑到目前为止写入的所有日志数据。

  • 也许可以对此进行编辑以显示如何设置日记增长限制。教人们吸尘,他们一次就能解决问题。教他们编辑 /etc/systemd/journald.conf,你教他们如何永久解决问题。另外,虽然没有被问到,但还是要稍微解释一下为什么 journald 与文本 syslogs 相比甚至是必要的。否则,Rinzwind 的评论可能会阻止人们控制日记,因为他们实际上在另一个来源中拥有日记提供的大部分内容。 (10认同)
  • 最后一件事 - 在专业环境中,您应该运行一个集中式日志记录系统,该系统有足够的空间来存储公司中每个系统一年的日志(可能是压缩的)(或至少六个月的日志),这样如果您的网络受到损害时,可以及时追溯该损害。因此,在专业环境中,journald 保留超过几天的本地日志实际上是对本地磁盘空间的浪费。 (5认同)
  • 可能对大多数人来说已经足够了,但是如果我每次有同事问我在某个特定日期发生了什么,而该日期超过 10 天时我得到 10 美元(见鬼 1 敢问 6 年前发生的事情:D)我会很富有。日志轮换(最后一句)对大多数人来说可能是一个更好的方法,更多地关注那部分可能会很好:) (4认同)
  • 在继续之前花了一个下午仔细查看文档后,我运行 `journalctl --vacum-size=100M` *认为它会删除 /var/log/journal 中的 100M 文件* ...然后我看到“清理完成” ,释放了2.0G的存档期刊”,我是个白痴!哦,好吧,并不是说我需要 2020 年 3 月的日志文件(我希望如此) (2认同)

Rob*_*lak 62

正如@kurt-fitzner 所写:

教他们编辑/etc/systemd/journald.conf,你教他们如何永久解决问题。

更具体地说:激活SystemMaxUse=那里的选项,例如SystemMaxUse=100M只使用 100 MB。

编辑后,使用service systemd-journald restart激活更改的配置。这将删除多余的日志。

journald.conf还有其他可能有用的选项

  • “MaxRetentionSec”是“/etc/systemd/journald.conf”中的参数,用于控制日志文件的保留时间。此设置采用的时间值可以带有单位“年”、“月”、“周”、“日”、“h”或“m”作为后缀,以覆盖默认的时间单位(秒)。 (11认同)
  • 编辑后,`sudo service systemd-journald restart` 将更改考虑在内并清除。 (5认同)

小智 19

您还需要在以下位置进行设置/etc/systemd/journald.conf

SystemMaxFileSize=100M
Run Code Online (Sandbox Code Playgroud)

请参阅:https ://got-tty.org/journalctl-via-journald-conf-die-loggroesse-definieren (德语)


小智 6

阅读本文时,我对 Journald.conf 的 SystemMaxFileSize 与 SystemMaxUse 选项感到困惑。这清楚了:

SystemMaxUse=RuntimeMaxUse=控制日志最多可以使用多少磁盘空间。SystemKeepFree=RuntimeKeepFree=控制 systemd-journald 应留出多少磁盘空间供其他用途。systemd-journald 将尊重这两个限制并使用两个值中较小的一个。

第一对默认为各自文件系统大小的 10%,第二对默认为 15%,但每个值的上限为 4G。如果文件系统几乎已满,并且在启动 systemd-journald 时违反了SystemKeepFree=RuntimeKeepFree=,则限制将提高到实际可用的百分比。这意味着,如果在创建日志文件之前有足够的可用空间,并且随后其他原因导致文件系统填满,则日志将停止使用更多空间,但它也不会删除现有文件以再次减少占用空间。另请注意,仅删除归档文件,以减少日志文件占用的空间。这意味着,实际上,在吸尘操作完成后,所使用的空间可能仍然多于SystemMaxUse=或限制。RuntimeMaxUse=

SystemMaxFileSize=RuntimeMaxFileSize=控制单个日志文件最多可以增长的大小。这会影响通过轮换(即删除历史数据)提供磁盘空间的粒度。SystemMaxUse=默认为使用和配置的值的八分之一RuntimeMaxUse=,因此通常会将七个轮换日志文件保留为历史记录。