如何清除系统日志

时间:2020-03-05 15:26:14  来源:igfitidea点击:

本快速教程向我们展示了两种从Linux系统中清除系统日志日志的方法。

systemd日志是systemd自己的日志记录系统。

它等效于init系统中的syslog。
它收集和存储各种系统服务的内核日志数据,系统日志消息,标准输出和错误。

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

我们可以使用less命令手动查看日志文件,也可以使用journalctl命令。

要查看所有最新日志,请使用带有反向选项的命令。

journalctl -r

随着时间的推移,日志记录开始变得越来越大。
而且,如果我们在Linux中检查磁盘空间,则会发现有时会占用数GB的空间。

让我向我们展示如何清除systemd日志日志并释放Linux系统上的磁盘空间。

清除系统日志日志

首先使用du命令检查日志日志占用的空间:

du -sh /var/log/journal/

我们也可以将journalctl命令用于同一任务:

journalctl --disk-usage

这两个命令应给出大致相同的结果:

Hyman@theitroad:~$journalctl --disk-usage
Archived and active journals take up 1.6G in the file system.
Hyman@theitroad:~$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.

我们可以使用GB来指定大小,以G表示MB,以M表示MB,以K表示KB等。

3.限制日志文件数

第三种方法是限制日志文件的数量。
journalctl通常具有系统和用户的日志文件。
随着日志变旧,它们会存储在各种文件中。

我们可以限制归档日志文件的数量。
假设我们只希望有五个日志文件。

journalctl --vacuum-files=5

它将删除较旧的存档日志文件,仅保留指定数量的日志文件。

Deleted archived journal /var/log/journal/1b9ab93094fa4978beba80fd3c48a18c/[email protected] (8.0M).
Deleted archived journal /var/log/journal/1b9ab93094fa4978beba80fd3c48a18c/[email protected] (48.0M).
Deleted archived journal /var/log/journal/1b9ab93094fa4978beba80fd3c48a18c/[email protected] (48.0M).
Vacuuming done, freed 104.0M of archived journals from /var/log/journal/1b9ab93094fa4978beba80fd3c48a18c.

如何在Linux中使用journalctl命令分析日志

在Linux中使用journalctl命令查看,过滤和分析日志日志的入门教程。

igi theitroadLinux手册

自动清除旧的日志文件[需要命令行的中级知识]

我们刚才所做的将立即清除日志文件。
一个月后,日志将再次增加。
我们可以使用上述方法之一手动清洁它们。
但这是一项繁琐的任务,我们可能不记得要定期这样做。

好处是,我们可以将systemd配置为自动处理旧的日志文件。

journalctl在/etc/systemd/journald.conf中具有配置文件。
有些设置已被注释掉。
注释行基本上指示了这些设置参数的默认值(即使已将它们注释掉了)。

我们可以更改其中一些默认设置以自动清除日志文件。

我们需要更改以下设置:

设置描述
systemmaxuse最大磁盘空间日志可以带
systemmaxfilesize单个日志文件的最大大小
systemmaxfiles最大日志文件

请注意,编辑配置文件时应格外小心。
我们必须习惯使用基于终端的文本编辑器(例如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设置。
我们甚至可以设置要查看的日志级别(信息,调试,错误等)。
是否要更改这些设置也取决于我们。