最近发现Ubuntu下用于系统日志清理的命令journalctl与网上搜索到的用法有些不同,似乎边官网文档中也没有很明确说明,于是我问了AI,结果国外AI,主打一个你纠正我我就改正,舔你没商量,国内AI就嘴硬,死不承认,纠正多了,要么和个稀泥折中,要么要我去联系官方客服。
比如网上搜索到文章教程都是说用以下命令参数可以清除7天以前的日志:
sudo journalctl --vacuum-time=7d
7d,即7天,这个可以改成自己想要的时间参数,比如1s,即1秒。
但实际上直接使用此命令,可能并没有这样的效果,特别是刚装系统不久,这时日志比较少还没任何归档时,就是说journalctl处理的对象是归档后的日志文件。如果日志文件仍在使用中,是不能被清理的。
怎么归档,一种是自动,日志文件到达默认设定大小后就自动归档(可以改设定条件),另一种是手动,使用带轮换参数的命令:
journalctl --flush --rotate
不管手动还是自动,都是将原在用(活动)日志文件改成归档文件,然后生成一个新的文件,新文件作为新的活动日志文件保存新产生的日志。
以上命令中的--flush参数是将存储在 /run/log/journal/ 中的所有日志数据冲入 /var/log/journal/,默认安装的Ubtuntu,似乎并不在 /run/log/journal/ 下保存日志(如果真的在这里,又没有启用持久存储,重启系统后,日志就会自动清空),所以如果日志只存在于 /var/log/journal/,则归档命令用journalctl --rotate即可。
还有一个与网上教程们不同的地方,journalctl命令清理的目标是文件,不是日志。假如一个归档日志文件中包含前10天的日志内容,使用sudo journalctl --vacuum-time=7d命令,并不会只删除7天前的日志,而留下3天的量,实际操作是当发现这个归档文件包括7天前的日志时,则该归档文件整个会被删除。
除了前面说的时间参数--vacuum-time外,其他参数也类似,比如按容量大小--vacuum-size删除归档日志文件。以上是在Ubuntu20.04和22.04上测试得来的结果。
>> 除非说明均为原创,如转载请注明来源于http://www.stormcn.cn/post/2329.html