如何停止 Docker 容器
2024年3月17日Linux 中 nslookup 命令的7个实际示例
2024年3月17日这个快速教程向您展示了两种从 Linux 系统中清除 systemd 日志日志的方法。
systemd 日志是systemd 自己的日志系统。相当于init系统中的syslog。它收集并存储各种 systemd 服务的内核日志记录数据、系统日志消息、标准输出和错误。
带有 systemd 的 Linux 机器将日志写入 /var/log/journal 目录。如果您还记得Linux 目录结构,/var 是存储系统日志的位置。
您可以使用 less 命令手动查看日志文件,也可以使用journalctl 命令。要查看所有最新日志,请使用带有反向选项的命令。
journalctl -r
日志记录的问题是,随着时间的推移,它开始变大。如果您检查 Linux 中的磁盘空间,您会发现有时需要几 GB 的空间。
让我向您展示如何清理 systemd 日志日志并释放 Linux 系统上的磁盘空间。
清除系统日志日志
![](https://www.alaica.com/wp-content/uploads/linux-40.jpg)
首先,使用du 命令检查日志日志占用的空间:
du -sh /var/log/journal/
您还可以使用journalctl命令来完成相同的任务:
journalctl --disk-usage
两个命令应该给出大致相同的结果:
abhishek@linuxhandbook:~$ journalctl --disk-usage
Archived and active journals take up 1.6G in the file system.
abhishek@linuxhandbook:~$ sudo du -sh /var/log/journal/
1.7G /var/log/journal/
现在您知道日志日志占用了多少空间,您可以决定是否要清除日志。如果您决定清除日志日志,让我向您展示几种执行此操作的方法。
当然,您可以使用 rm 命令删除日志文件夹中的文件,但我不建议这样做。Journalctl 命令为您提供了处理旧日志的正确方法。
您应该做的第一件事是轮换日志文件。这会将当前活动的日志日志标记为存档并创建全新的日志。这是可选的,但这样做是一个很好的做法。
sudo journalctl --rotate
现在您可以通过三种方法来清除旧日志日志。您可以删除早于特定时间的日志,或者删除较旧的日志文件,以便将日志总大小限制在预定义的磁盘空间内,或者限制日志文件的数量。让我们看看如何使用这三种方法。
1.清除超过x天的日志日志
请记住,日志对于审核目的很重要,因此您不应同时删除所有日志。假设您只想保留两天的日志历史记录。要删除超过两天的所有条目,请使用以下命令:
sudo journalctl --vacuum-time=2d
输出可能如下所示:
Vacuuming done, freed 1.6G of archived journals from /var/log/journal/1b9ab93094fa4978beba80fd3c48a18c
您还可以更改提供时间范围,以小时为单位(如 2h),以分钟为单位(如 2m),以秒为单位(如 2s)。如果你想要更大的时间单位,你可以是2周,2个月。
2.限制日志大小
另一种方法是限制日志大小。这将删除日记日志文件,直到日记日志占用的磁盘空间低于您指定的大小。
sudo journalctl --vacuum-size=100M
这会将日志大小减少到 100 MB 左右。
Vacuuming done, freed 40.0M of archived journals from /var/log/journal/1b9ab93094fa4978beba80fd3c48a18c.
您可以用 G 来指定大小,用 M 来指定 MB,用 K 来指定 KB 等。
3.限制日志文件数量
第三种方法是限制日志文件的数量。Journalctl 通常有系统和用户的日志文件。随着日志变旧,它们会被归档在各种文件中。
您可以限制归档日志文件的数量。假设您只想拥有五个日志文件。
journalctl --vacuum-files=5
它将删除较旧的归档日志文件,仅保留指定数量的日志文件。
Deleted archived journal /var/log/journal/1b9ab93094fa4978beba80fd3c48a18c/system@d9fbc18533be4cb69483adf2a61505ac-00000000001e0bba-00059745988c0982.journal (8.0M).
Deleted archived journal /var/log/journal/1b9ab93094fa4978beba80fd3c48a18c/user-1000@f571e91e5c6748a8a74666a448df78dd-00000000001e21d4-00059747a2ebd5a3.journal (48.0M).
Deleted archived journal /var/log/journal/1b9ab93094fa4978beba80fd3c48a18c/system@d9fbc18533be4cb69483adf2a61505ac-00000000001e2414-00059747a32024d0.journal (48.0M).
Vacuuming done, freed 104.0M of archived journals from /var/log/journal/1b9ab93094fa4978beba80fd3c48a18c.
![](https://www.alaica.com/wp-content/uploads/linux-41.jpg)
自动清除旧日志文件[需要命令行的中级知识]
您刚才所做的操作将暂时清除日志文件。一个月后,日志又会增加。您可以使用上述方法之一手动清洁它们。但这是一项乏味的任务,您可能不记得定期这样做。
好处是您可以配置 systemd 自动处理旧日志文件。
Journalctl 的配置文件位于 /etc/systemd/journald.conf。有些设置被注释掉了。注释行基本上表示这些设置参数的默认值(即使它们被注释掉)。
您可以更改其中一些默认设置以自动清理日志文件。
您可能想要更改以下设置:
环境 | 描述 |
---|---|
系统最大使用量 | 日志可以占用的最大磁盘空间 |
系统最大文件大小 | 单个日志文件的最大大小 |
系统最大文件数 | 最大日志文件数 |
注意力!
请注意,编辑配置文件时应小心。您必须熟悉使用基于终端的文本编辑器(例如 Vim、Emacs或 Nano),这样您在编辑 conf 文件时就不会犯愚蠢的错误。
我建议先备份配置文件:
cp /etc/systemd/journald.conf /etc/systemd/journald.conf.back
现在,您应该取消注释(删除行开头的 #)您要使用的设置。例如,我想将日志文件占用的最大磁盘空间限制为 250 MB。
您必须使用 Vim或其他基于终端的编辑器才能编辑此配置文件。这是编辑文件后的样子。
# This file is part of systemd.
#
# systemd is free software; you can redistribute it and/or modify it
# under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
#
# Entries in this file show the compile time defaults.
# You can change settings by editing this file.
# Defaults can be restored by simply deleting this file.
#
# See journald.conf(5) for details.
[Journal]
#Storage=auto
#Compress=yes
#Seal=yes
#SplitMode=uid
#SyncIntervalSec=5m
#RateLimitIntervalSec=30s
#RateLimitBurst=1000
SystemMaxUse=250M
#SystemKeepFree=
#SystemMaxFileSize=
#SystemMaxFiles=100
请记住,编辑配置文件后,您应该加载更改:
sudo systemctl restart systemd-journald
该journald.conf文件可用于进一步调整journalctl设置。您甚至可以设置您想要查看的日志级别(信息、调试、错误等)。如果您也想更改这些设置,则由您决定。
![](https://www.alaica.com/wp-content/uploads/linux-311.png)
我希望您喜欢这个清除 systemd 日志文件的技巧。如果您有任何疑问或建议,请在下方留言。