本快速教程向您展示了两种从Linux系统中清除systemd日志的方法。journald是systemd自己的日志系统。它相当于init 系统中的syslog。

它为各种systemd服务收集和存储内核日志数据、系统日志消息、标准输出和错误。

具有systemd的Linux机器将日志写入/var/log/journal目录。如果您还记得Linux 目录结构,/var/log就是存储系统日志的位置。

您可以使用less命令或使用journalctl命令手动查看日志文件。要查看所有最新日志,请运行命令sudo journalctl -r

日志记录的问题是,随着时间的推移,它会逐渐变大。如果您检查Linux的磁盘空间,您会发现日志会占用几GB的空间。

教程将向您展示如何清理systemd日志并释 Linux系统上的磁盘空间。

清除systemd journal日志

首先使用du命令检查日志占用的空间,运行命令du -sh /var/log/journal/。您还可以运行journalctl命令检查日志占用的磁盘空间。

journalctl --disk-usage

这两个命令应该给出大致相同的结果。现在您知道日志占用了多少空间,您可以决定是否要清除日志。

您当然可以使用rm命令删除日志文件夹中的文件,但不建议这样做。journalctl命令为您提供了处理旧日志的正确方法。

您应该做的第一件事是回滚日志文件。这会将当前活动的日志标记为存档并创建新的日志。这是可选的,但这样做是一个好习惯。

sudo journalctl --rotate

现在您有三种方法可以清除旧的日志。您可以删除超过指定时间的日志或删除较旧的日志文件,以便将总日志大小限制为预定义的磁盘空间或限制日志文件的数量。

清除超过N天的日志

请记住,日志对于审计很重要,因此您不应同时删除所有日志。假设您希望仅保留两天的日志历史记录。要删除超过两天的所有日志,请使用以下命令。

您还可以更改以小时为单位,如 2h。以分钟为单位,如 2m。以秒为单位如 2s。如果你想要更大的时间单位,你可以2周,2 个月也可以。

sudo journalctl --vacuum-time=2d

限制日志大小

另一种方法是限制日志大小。这样,它将自动删除日志文件,直到日志占用的磁盘空间低于您指定的大小。

例如将日志大小减少到大约100MB。您可以用G指定GB的大小,用M指定MB的大小,用K指定KB等。

sudo journalctl --vacuum-size=100M

限制日志文件数量

第三种方式是限制日志文件的数量。journalctl通常有系统和用户的日志文件。随着日志变旧,它们被归档在各种文件中。

您可以限制归档日志文件的数量。假设您只想拥有五个日志文件。它将删除较旧的存档日志文件,只留下指定数量的日志文件。

journalctl --vacuum-files=5

自动删除日志

您刚才所做的将暂时清除日志文件。一个月后,日志将再次增加。您可以使用上述方法之一手动清除它们。但这是一项乏味的任务,您可能不记得经常这样做。

好消息是您可以将 systemd 配置为自动处理旧日志文件。journalctl的配置文件位于 /etc/systemd/journald.conf

有一些设置被注释掉。注释行基本上表示这些设置参数的默认值,即使它们被注释掉。您可以更改其中一些默认设置以自动清理日志文件。

SystemMaxUse表示允许日志文件占用最大的磁盘空间,SystemMaxFileSize表示允许单个日志文件最大的大小。SystemMaxFiles表示日志最大的日志文件的数量。

请注意,在编辑配置文件时应该小心。您必须习惯使用基于终端的文本编辑器,如 VimNano

在编辑配置文件之前建议议先备份配置文件cp /etc/systemd/journald.conf /etc/systemd/journald.conf.back

现在,您应该取消注释,删除您要使用的设置行首的#。例如,我想将日志文件占用的最大磁盘空间限制为250MB。

您必须使用Vim或其他基于终端的编辑器才能编辑此配置文件。请记住,编辑配置文件后,你应该重新启动journald服务。

sudo systemctl restart systemd-journald

journald.conf文件可用于进一步调整journalctl设置。您甚至可以设置想要查看的日志级别(信息、调试、错误等)。如果您也想更改这些设置,这取决于您。

我希望你喜欢这个清除systemd日志文件的技巧。如果您有任何问题或建议,请在下面发表评论。