网站搜索

systemd 日志清理过程指南 [带有示例]


Systemd 带有许多内置功能来管理系统日志。在本指南中,我们解释了如何管理系统日志、日志并对其采取操作,例如轮换、归档和清除日志。 我们还解释了手动系统日志清理方法以及使用配置文件更改。

如果您的 Linux 发行版支持 systemd,那么它从启动开始每秒都会从系统的所有进程、应用程序收集日志。所有这些日志记录事件均由 systemd 的 journald 守护进程管理。日志收集所有日志(信息、警告、错误等)并将它们作为二进制数据存储在磁盘文件中。

由于日志保留在磁盘中,并且每秒都会收集一次,因此会占用巨大的磁盘空间;特别是对于旧系统、服务器。例如,在我的一个运行了大约一年的测试系统中,日志文件大小以 GB 为单位。

如果您管理多个系统、服务器,始终建议正确管理日志日志以实现高效运行。让我们看看如何管理日志文件。

systemd 日志维护

使用systemd的journalctl实用程序,您可以查询这些日志,并对它们执行各种操作。例如,查看不同启动的日志文件,检查最后的警告、特定进程或应用程序的错误。如果您不知道这些,我建议您在遵循本指南之前快速浏览一下本教程 - “使用journalctl 查看和分析 Systemd 日志[带示例]”。

物理日志文件在哪里?

systemd 的journald 守护进程从每次启动时收集日志。这意味着,它根据启动对日志文件进行分类。

日志以二进制形式存储在路径 /var/log/journal 中,并以文件夹作为机器 ID。

例如:

物理日志文件截图-1

物理日志文件截图-2

另外,请记住,根据系统配置,运行时日志文件存储在 /run/log/journal/ 中。并且这些在每次启动时都会被删除。

我可以手动删除日志文件吗?

你可以,但不要这样做。相反,请按照以下说明使用journalctl实用程序清除日志文件以释放磁盘空间。

systemd 日志文件使用了多少磁盘空间?

打开终端并运行以下命令。

journalctl --disk-usage

这应该为您提供系统中日志文件实际使用的数量。

Journalctl 磁盘使用命令

如果您有图形桌面环境,可以打开文件管理器并浏览路径 /var/log/journal 并检查属性。

systemd 日志清理过程

清除日志文件的有效方法应该是通过journald.conf配置文件来完成。理想情况下,即使journalctl提供了执行此操作的实用程序,您也不应该手动删除日志文件。

我们来看看如何手动删除它,然后我会解释一下 journald.conf 中的配置更改,以便您不需要时不时地手动删除文件;相反,systemd 会根据您的配置自动处理它。

手动删除

首先,您必须刷新和轮换日志文件。轮换是将当前活动日志文件标记为存档并从此时开始创建新日志文件的一种方法。如果启用了持久存储,刷新开关会要求日志守护进程将 /run/log/journal/ 中存储的所有日志数据刷新到 /var/log/journal/ 中。

然后,在刷新和旋转之后,您需要运行带有vacuum-size、vacuum-time和vacuum-files开关的journalctl来强制systemd清除日志。

示例1:

sudo journalctl --flush --rotate
sudo journalctl --vacuum-time=1s

上面的命令集将删除直到最后一秒的所有归档日志日志文件。这有效地清除了一切。因此,运行命令时要小心。

日志清理 - 示例

清理后:

清理后——日志空间使用情况

您还可以根据需要在号码后面提供以下后缀。

  • s:秒
  • 米:分钟
  • h: 小时
  • 天
  • 月
  • 周
  • 年

示例2:

sudo journalctl --flush --rotate
sudo journalctl --vacuum-size=400M

这将清除所有存档的日志日志文件并保留最后的 400MB 文件。请记住,此开关仅适用于存档日志文件,不适用于活动日志文件。您还可以使用如下后缀。

  • K:KB
  • 中号:MB
  • G:国标

示例3:

sudo journalctl --flush --rotate
sudo journalctl --vacuum-files=2

vacuum-files 开关清除指定数量以下的所有日志文件。因此,在上面的示例中,仅保留最后 2 个日志文件,其他所有内容都被删除。同样,这仅适用于存档文件。

如果需要,您可以组合这些开关,但我建议不要这样做。但是,请确保首先使用 --rotate 开关运行。

使用配置文件自动删除

虽然上述方法很好且易于使用,但建议您使用 /etc/systemd/journald.conf 中的日志配置文件来控制日志日志文件清理过程。

systemd 提供了许多参数供您有效管理日志文件。通过组合这些参数,您可以有效地限制日志文件使用的磁盘空间。让我们来看看。

journald.conf parameterDescriptionExample
SystemMaxUseSpecifies the maximum disk space that can be used by the journal in persistent storageSystemMaxUse=500M
SystemKeepFreeSpecifies the amount of space that the journal should leave free when adding journal entries to persistent storage.SystemKeepFree=100M
SystemMaxFileSizeControls how large individual journal files can grow to in persistent storage before being rotated.SystemMaxFileSize=100M
RuntimeMaxUseSpecifies the maximum disk space that can be used in volatile storage (within the /run filesystem).RuntimeMaxUse=100M
RuntimeKeepFreeSpecifies the amount of space to be set aside for other uses when writing data to volatile storage (within the /run filesystem).RuntimeMaxUse=100M
RuntimeMaxFileSizeSpecifies the amount of space that an individual journal file can take up in volatile storage (within the /run filesystem) before being rotated.RuntimeMaxFileSize=200M

如果您在正在运行的系统中将这些值添加到 /etc/systemd/journald.conf 文件中,则必须在更新文件后重新启动日志。要重新启动,请使用以下命令。

sudo systemctl restart systemd-journald

验证日志文件

清理文件后检查日志文件的完整性是明智的做法。为此,请运行以下命令。该命令显示日志文件的 PASS、FAIL。

journalctl --verify

验证日志文件

结束语

我希望本指南可以帮助您了解 systemd 日志管理流程的基础知识。有了这些,您可以通过限制空间、清除旧日志文件来管理系统或服务器中日志文件使用的磁盘空间。这些只是指导性命令,您可以通过多种方式组合它们来满足您的系统需求。

  • journalctl 手册
  • journald.conf 手册

相关文章