本文分享了两种从Linux系统清除系统日志的方法:一种是手动清除Linux系统日志,一种是自动清除Linux系统日志。
systemd journal是systemd自己的日志系统。它等价于init系统中的syslog。它为各种systemd服务收集和存储内核日志数据、系统日志消息、标准输出和错误。
使用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
这两个命令应给出大致相同的结果:
abhishek@linuxhandbook:~$ journalctl --disk-usageArchived 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.
您可以使用GB来指定大小,以G表示MB,以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/j
自动清除旧的日志文件[需要命令行的中级知识]
您刚才所做的将立即清除日志文件。一个月后,日志将再次增加。您可以使用上述方法之一手动清洁它们。但这是一项繁琐的任务,您可能不记得要定期这样做。
好处是,您可以将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=1000SystemMaxUse=250M#SystemKeepFree=#SystemMaxFileSize=#SystemMaxFiles=100
请记住,在编辑配置文件之后,您应该加载更改:
sudo systemctl restart systemd-journald
journald.conf文件可用于进一步调整journalctl设置。您甚至可以设置要查看的日志级别(信息,调试,错误等)。是否要更改这些设置也取决于您。
以上就是从Linux系统清除系统日志的方法。
评论前必须登录!
注册