0%

Liunx系统journal日志清理

Linux系统下var/log/journal常常霸占着大量空间,但又一般情况毫无用处,因此需要进行一些设定来控制日志大小。

题外话

作为一个linux小白,也就电脑上装了个虚拟机,20G内存,如果不是写作业把电脑内存用爆了,大概也不会注意到它吧。

我的系统是Ubuntu 18,应该所有linux都适用。

查看占用内存

处理到var/log/journal下查看内存占用,还可以直接输入以下命令查看:

1
journalctl --disk-usage

删除日志

方法一:通过日志可存在的时间

通过设置日志可存在的时间长度来删除日志:

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

第二行:

这里可选的参数:s是秒,m是分,h是小时,d是日,w是星期,months是月。

因此一般不太可能出现前一秒生成的日志,因此设置时长为1秒可以删除所有日志。
但如果之后想保存一段时间的日志,需要重新设置一下,比如我设置为1个月。

第一行:

这里rotate的作用是将一个active的日志变为archived,也就是可能现在在录入日志,把在此之前的日志封装为一个,并换下一个文件进行日志记录。
这样可以把在此之前的日志全部清理,当然,不用这个命令也是可以的。

方法二:通过日志可存在的最大内存

除了用时间,当然也可以用空间来删除

1
sudo journalctl --rotate --vacuum-size=50M

这里是指删除到小于50M,rotate在一些新版本种可以写在一行种。

空间常见的就是KMGT四个单位

方法三:直接删除文件

把整个文件夹全部删除也是没有问题的,不过我个人觉得有上面的方法为什么还要硬核删除呢。

设置日志参数

日志文件过大无非是因为没有针对日期和内存大小的自动清理机制,可以通过一些设置来实现。

修改的文件是/etc/systemd/journald.conf

设置最大占用空间

1
SystemMaxUse=100M

设置最长保存时间

1
MaxFileSec=5day

参考资料

How To Clear The systemd journal Logs