我在Google中找不到清除系统日志的任何安全方法。有谁知道安全可靠的方法吗?
假设我正在尝试某些东西,但日志中却堆满了各种错误消息。此外,我正在使用Conky在桌面上显示日记。我真的不想看到这些错误,因为它们让我想起了我正在修理此产品的糟糕一天,我想在经历过这种恐怖之后感觉像个新鲜人。我想每个人都会同意,这是清除日志:P的正当理由。
我在Google中找不到清除系统日志的任何安全方法。有谁知道安全可靠的方法吗?
假设我正在尝试某些东西,但日志中却堆满了各种错误消息。此外,我正在使用Conky在桌面上显示日记。我真的不想看到这些错误,因为它们让我想起了我正在修理此产品的糟糕一天,我想在经历过这种恐怖之后感觉像个新鲜人。我想每个人都会同意,这是清除日志:P的正当理由。
Answers:
自我维护方法是按大小或时间清理日志。
仅保留过去两天:
journalctl --vacuum-time=2d
仅保留过去的500 MB:
journalctl --vacuum-size=500M
man journalctl
欲获得更多信息。
journalctl --vacuum-size=1K
然后journalctl
仍然显示超过1K的方式。它显示自上次引导以来的所有消息。
journalctl --flush --rotate
之前journalctl --vacuum-time=1s
,它去掉更多的东西,虽然仍然不能代表一切。
通常,您通常不会自己清除日记帐。这是由systemd本身管理的,随着新数据的进入,旧日志会轮换出来。正确的做法是安排日志记录以仅保留您感兴趣的数据。最常调整的是总磁盘允许占用的空间。一旦越过边界,它将开始倾斜旧条目以保持在该值附近。
您可以这样设置/etc/systemd/journald.conf
:
SystemMaxUse=100M
MaxRetentionSec
而不是SystemMaxUse
。请参阅man journald.conf
以获取更多详细信息。
迈克尔的答案缺少一件事:清理仅删除存档的日志文件,而不删除活动的日志文件。要清除所有内容,您需要先旋转文件,以便将最近的条目移至非活动文件。
因此,删除所有条目的完整答案似乎是
journalctl --rotate
journalctl --vacuum-time=1s
(请注意,您不能将其组合为一个journalctl
命令。)
顺便说一句,有些发行版已配置日志,以便将日志写入磁盘(/var/log/journal
),而其他分发则将日志保留在内存(/run/log/journal
)中。我希望在某些情况下,可能有必要journalctl --flush
先删除所有内容。
如果您--rotate
的版本中没有,则可以使用--since
参数过滤条目:
--since "2019-01-30 14:00:00"
--since today
在Arch Linux上,我得到的最接近的是:
sudo systemctl restart systemd-journald
在我的系统上,每个日记文件为8MB,以上清除了除3个以外的所有文件,因此总大小约为25MB。
我用例被禁用头奶牛BTRFS(只是为杂志目录及子目录)sudo chattr +C /var/log/journal/*
。问题是,该属性仅在新创建的文件上设置,因此需要刷新日志。
SystemMaxUse=1K
,重新启动了systemd-journald
,但是journalctl仍然显示我想要消失的条目。平面文本文件的进展如何?
由于--vacuum-time
并且--vacuum-size
没有为我做任何事情,因此我执行了以下操作:
$ sudo find /var/log/journal -name "*.journal" | xargs sudo rm
$ sudo systemctl restart systemd-journald
这是不对的,但确实有效。
/run/log
。
一种非常暴力的方法来清理整个日志:
$ sudo journalctl --vacuum-time=1seconds
您也可以--vacuum-size
像迈克尔一样使用。
systemctl restart systemd-journald
。