假设我正在尝试某些东西,但日志中到处都是各种错误消息。此外,我正在使用Conky在桌面上显示日记。我真的不想看到这些错误,因为它们让我想起了我正在修理这些东西的糟糕一天,我想在经历过这种恐怖之后感觉像个新鲜人。我想每个人都会同意这是清除日志的正确理由:P。
#1 楼
自我维护方法是按大小或时间清理日志。仅保留过去两天:
journalctl --vacuum-time=2d
仅保留过去500 MB:
journalctl --vacuum-size=500M
man journalctl
了解更多信息。评论
好的命令,但是对openSUSE 13.2(当前的稳定版本)不起作用。众所周知,在内核和用户界面程序方面,Arch通常处于最前沿,因此我推测,真空选项可能最近已添加到系统中,而没有沉淀到我的发行版中。在Lennart在2014年12月10日的公告中,确认了以下事实:在systemd v218中添加了此命令。只是添加此注释,以防像我这样不在Arch上的其他人也有类似的问题。无论如何都支持。
–约书亚·胡贝尔(Joshua Huber)
2015年4月23日在0:33
在Ubuntu 16.04上的版本“ systemd 229”中不起作用。 journalctl --vacuum-size = 1K,那么journalctl仍然显示超过1K的方式。它显示自上次引导以来的所有消息。
– Dan Dascalescu
16-9-10下午4:23
看来这只会清除存档的日志,而不清除活动日志。我尝试在journalctl --vacuum-time = 1s之前运行journalctl --flush --rotate,它删除了更多内容,尽管仍然不是全部。
–user60039
17-2-7在19:42
该文档对我来说似乎不太清楚。它是否始终设置为2d(在您的示例中)?还是从运行命令起算的2d?也许我不明白这是如何工作的。
–泽西豆
17年8月3日在1:49
不过要小心,我使用了sudo journalctl --vacuum-time = 7d,只留下了今天的日志...好像是个越野车功能
– EarthMind
19年4月15日在19:57
#2 楼
您通常不会自己清除日记帐。这是由systemd本身管理的,随着新数据的传入,旧日志会轮换出来。正确的做法是安排日志记录,使其仅保留您感兴趣的数据。最常调整的是总磁盘允许占用的空间。越过边界后,它将开始倾斜旧条目以保持在该值附近。您可以在
/etc/systemd/journald.conf
中进行设置,如下所示:SystemMaxUse=100M
评论
好的,但是也有不典型的情况。我知道其中大多数只是出于审美的原因,但是审美是人类的合理理由;)。
–ŁukaszZaroda
14年6月27日在12:08
@ŁukaszZaroda在这种情况下,您将必须定义“安全”。通常,“我要删除守护程序配置为保留的内容”与“安全”不兼容。如果要强制执行此操作,只需关闭服务并将日志文件清零即可。如果您希望它正常运行,则应更好地定义问题中的参数。 “安全”是什么意思?
–卡莱布
14年6月27日在12:17
出于安全考虑,我的意思是说清除后,它会照常工作,只是从新地方开始。
–ŁukaszZaroda
2014年6月27日12:19
这可能不是典型的情况,但有时由于某些systemd的错误(例如bbs.archlinux.org/viewtopic.php?pid=1173031#p1173031
–anlar
2014年6月27日15:57
要在一段时间(而不是达到一定大小)后清除日志,可以设置参数MaxRetentionSec而不是SystemMaxUse。有关更多详细信息,请参见man journald.conf。
– joelostblom
18 Mar 29 '18 at 13:08
#3 楼
迈克尔的答案缺少一件事:清理仅删除存档的日记文件,而不删除活动的日记文件。要清除所有内容,您需要先旋转文件,以便将最近的条目移至非活动文件。因此,删除所有条目的完整答案似乎是
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
评论
journalctl:无法识别的选项“ --rotate”
–stiv
18-10-7在12:22
当我得到其他答案正在解决的问题(长期策略)时,问题很简单:如何立即清除日志(也许您对当前任务的长期利益不感兴趣)。这无需做出其他假设即可回答该问题,并为理解journalctl增添了其他巨大价值。这应该是答案。
– Marc
18-10-20在15:39
最初的问题是“如何为调试目的重置日志”。这是解决该问题的唯一答案。我很高兴我发现了它。其余的是有趣的journalctl类事实,但不是问题的答案。
–特拉维斯·格里格斯(Travis Griggs)
19-10-25在19:08
您将如何为特定服务而不是所有服务指定此名称?我想保留所有服务的日志,同时清除一项特定服务的日志。
–Lonniebiz
8月2日12:20
@Lonniebiz如果您有新问题,请单独提问,谢谢!
– Jeff Schaller♦
10月23日20:10
#4 楼
在Arch linux上,我最接近的是:编辑/etc/systemd/journald.conf以设置SystemMaxUse = 1M
重新启动日志:
sudo systemctl restart systemd-journald
重置SystemMaxUse = 200M
重新重启日志
在我的系统上,每个日志文件均为8MB,以上内容清除了除3个以外的所有文件,因此总大小约为25MB。 br />
我的用例是禁用BTRFS的CoW(仅用于日记目录和子目录):
sudo chattr +C /var/log/journal/*
。问题在于,该属性仅在新创建的文件上设置,因此需要刷新日志。评论
实际上不需要您的用例。在日记帐上禁用CoW的要点是它经常被写入。旧的循环日记文件不是这种情况,它们只是坐在那里。
– Hjulle
15年3月31日在10:03
我设置了SystemMaxUse = 1K,重新启动了systemd-journald,但是journalctl仍然显示我想要消失的条目。平面文本文件的进展如何?
– Dan Dascalescu
2016年9月10日下午4:18
#5 楼
由于--vacuum-time
和--vacuum-size
对我没有任何帮助,因此我执行了以下操作: $ sudo find /var/log/journal -name "*.journal" | xargs sudo rm
$ sudo systemctl restart systemd-journald
这不对,但是有效。
评论
在Debian Jessie上,路径为/ run / log。
–同步
18年2月12日在18:23
这是当前正确的答案。如果journalctl命令可以执行此操作,但它似乎无法执行,那就太好了。
–凯文·莱达(Kevin Lyda)
19-09-26在10:43
某些程序无法正确处理其日志,这可能会破坏它们
–Faissaloo
19/12/26在13:42
#6 楼
清理整个日志的一种非常强力的方法:评论
没用即使在运行systemctl重新启动systemd-journald之后,仍会显示15分钟前的条目。
– Dan Dascalescu
16年9月10日在4:15
同样在这里。这对我也不起作用。我正在运行CentOS7。
–泽西豆
17年8月3日在1:55
#7 楼
在CentOS上,--rotate和--vacuum-time = 1s都不适合我。我能够这样清除它:sudo rm -rf /run/log/journal/*
评论
我在./journal中找到2个十六进制名称的目录。 journalctl命令仅在最新的命令中起作用。因此,我不得不手动删除旧目录,这很安全。之后,我只限制了日记conf中的大小。
–KeitelDOG
19年2月19日在20:40
在Ubuntu Server 20.04上,您提到的文件夹存在,但其中没有任何内容(ls -lah / run / log / journal /)。
–Lonniebiz
8月2日12:25
在Ubuntu上,目录似乎是/ var / log / journal / *。
–Eerik Sven Puudist
11月15日20:32
#8 楼
我之前的答案因“重复”而被删除。好吧,很抱歉,我之前的回答不够清楚,但这与现有答案有所不同。因此,这里有一个更详细的版本:journalctl -m --vacuum-time=1s
为我成功了。请注意-m
标志,它会合并所有日记帐,然后清理它们。没有-m
标志,就我而言(在CentOS-7上)它并没有清除任何内容。希望它会有所帮助。
#9 楼
journalctl -b
将仅从最新启动中显示。您还可以使用-b -1
,-b -2
等。您的恐怖日子仍然存在,但除非有必要,否则就不必看到它。#10 楼
如果以后需要它,请备份:
cp /run/log/journal/<temp-string>/system.journal /mylog/dir/back/system.journal.bak
清除文件:
cd /run/log/journal/<temp-string>/
>system.journal
检查以查看最新日志:
journalctl -xe
评论
用cd命令清除文件?
– Alexis Wilke
11月4日21:39
#11 楼
也sudo journalctl --vacuum-files 1
。
评论
这是寻找清除日记帐分录的方式时最重要的搜索结果。但是,下面的答案都无法真正回答问题,因为它们要么删除旧日志,要么删除所有日志。它们都与清除最近或特定的日志无关。我在unix.stackexchange.com/questions/272662/…上发布了删除特定日志条目的指南。