systemd 内置了很多管理系统日志的功能。在本指南中,我们将介绍如何管理系统日志,并对其采取轮换、归档和清除日志等操作。我们还解释了手动系统日志清理方法和使用配置文件的变化。
如果你的 Linux 发行版支持 systemd,那么从启动时开始,它每秒钟都会从系统的所有进程和应用程序中收集日志。所有这些日志事件都由 systemd 的 journald
守护程序管理。journald 收集所有的日志(信息、警告、错误等),并将其作为二进制数据存储在磁盘文件中。
由于日志保留在磁盘中,而且每秒钟都在收集,所以它占用了巨大的磁盘空间;特别是对于旧的系统、服务器来说。例如,在我的一个运行了一年左右的测试系统中,日志文件的大小是 GB 级的。
如果你管理多个系统、服务器,建议一定要正确管理 journald 日志,以便高效运行。让我们来看看如何管理日志文件。
systemd 日志维护
使用 systemd 的 journalctl
工具,你可以查询这些日志,对其进行各种操作。例如,查看不同启动时的日志文件,检查特定进程或应用程序的最后警告和错误。如果你对这些不了解,我建议你在学习本指南之前先快速浏览一下此教程:使用 journalctl 查看和分析 systemd 日志(附实例) 》。
物理日记的日志文件在哪里?
systemd 的 journald 守护进程在每次启动时都会收集日志。这意味着,它根据启动情况对日志文件进行分类。
日志以二进制形式存储在路径 /var/log/journal
,文件夹为机器 ID。
比如说:
另外,请记住,根据系统配置,运行时日志文件被存储在 /run/log/journal/
。而这些在每次启动时都会被删除。
我可以手动删除日志文件吗?
你可以,但不要这样做。相反,请按照下面的说明,使用 journalctl
工具清除日志文件以释放磁盘空间。
systemd 的日志文件占用了多少磁盘空间?
打开一个终端,运行以下命令。
journalctl --disk-usage
这应该为你提供系统中的日志文件实际使用的数量。
如果你有一个图形化的桌面环境,你可以打开文件管理器,浏览路径 /var/log/journal
,并检查属性。
systemd 日志清理过程
清理日志文件的有效方法应该是通过 journald.conf
配置文件来完成。正常情况下,即使 journalctl
提供了删除日志文件的工具,你也不应该手动删除这些文件。
让我们来看看如何 手动 删除它,然后我将解释 journald.conf
中的配置变化,这样你就不需要时不时地手动删除文件;相反,systemd 会根据你的配置自动处理它。
手动删除
首先,你必须 flush
和 rotate
日志文件。 轮换 是将当前活动的日志文件归档,并立即开始创建一个新的日志文件继续记录日志。 冲洗 开关要求日志守护进程将存储在 /run/log/journal/
中的所有日志数据冲入 /var/log/journal/
,如果持久性存储被启用的话。
然后,在 flush
和 rotate
之后,你需要用 vacuum-size
、vacuum-time
和 vacuum-files
选项运行 journalctl
来强制 systemd 清除日志。
例 1:
sudo journalctl --flush --rotate
sudo journalctl --vacuum-time=1s
上面这组命令会删除所有存档的日志文件,直到最后一秒。这有效地清除了一切。因此,在运行该命令时要小心。
清理完毕后:
你也可以根据你的需要在 --vacuum-time
的数字后面提供以下后缀:
s
:秒m
:分钟h
:小时days
:天months
:月weeks
:周years
:年
例 2:
sudo journalctl --flush --rotate
sudo journalctl --vacuum-size=400M
这将清除所有存档的日志文件,并保留最后 400MB 的文件。记住这个开关只适用于存档的日志文件,不适用于活动的日志文件。你也可以使用后缀,如下所示。
K
:KBM
:MBG
:GB
例 3:
sudo journalctl --flush --rotate
sudo journalctl --vacuum-files=2
vacuum-files
选项会清除所有低于指定数量的日志文件。因此,在上面的例子中,只有最后两个日志文件被保留,其他的都被删除。同样,这只对存档的文件有效。
如果你愿意,你可以把两种选项结合起来,但我建议不要这样做。然而,如果同时使用两个选项,请确保先用 --rotate
选项运行。
使用配置文件自动删除
虽然上述方法很好,也很容易使用,但建议你使用 journald 配置文件来控制日志文件的清理过程,该文件存在于 /etc/systemd/journald.conf
。
systemd 为你提供了许多参数来有效管理日志文件。通过组合这些参数,你可以有效地限制日志文件所占用的磁盘空间。让我们来看看。
journald.conf 参数 | 描述 | 实例 |
---|
via: https://www.debugpoint.com/systemd-journald-clean/
发表回复