rei*_*ost 3 journalctl systemd-journald
我们的一台 Ubuntu 18.04 主机被捕获了 12 GB 的*.journal
文件,远远超出了预期。为了弄清楚它们是否值得保留,我跑了
journalctl --file $f
Run Code Online (Sandbox Code Playgroud)
每个早于今天的文件;这总是导致Failed to open files
或--- No entries ---
。
我得出这样的文件是垃圾并且可以丢弃的结论是否正确?
如果是的话,它们为何存在?支持的清理方法是什么?是否值得定期检查系统是否存在?
首先,Journal 是一个日志系统,是systemd
. 当您需要知道发生了什么时,它们的存在至关重要。
正如这里提到的,journalctl --file
不是那么有用。
由于日志文件会定期轮换,因此这种形式并不真正可用于查看完整的日志。
现在,您是否认为这些文件无用,由您决定。通常,太旧的日志不值得保留,您可以删除它们。
为此,最好使用journalctl
真空吸尘器本身及其实用工具。例如你可以使用
sudo journalctl --vacuum-time=3weeks
Run Code Online (Sandbox Code Playgroud)
删除所有超过 3 周的日志文件。
有关更多信息,请查看手册页man journalctl
。
--vacuum-size=, --vacuum-time=, --vacuum-files=
删除最旧的存档日志文件,直到它们使用的磁盘空间低于指定大小(使用通常的“K”、“M”、“G”和“T”后缀指定),或者所有存档日志文件不包含早于指定的时间跨度(用通常的“s”、“m”、“h”、“天”、“月”、“周”和“年”后缀指定),或保留不超过指定数量的单独日志文件。请注意,运行 --vacuum-size= 仅对 --disk-usage 显示的输出产生间接影响,因为后者包括活动日志文件,而清理操作仅对存档日志文件进行操作。同样, --vacuum-files= 实际上可能不会将日志文件的数量减少到指定数量以下,因为它不会删除活动的日志文件。
另外,我认为定期检查这一点并不值得。您可以做的最好的事情是通过取消注释并更改 中的以下内容来设置上限/etc/systemd/journald.conf
。
例如:
SystemMaxUse=4G
Run Code Online (Sandbox Code Playgroud)
然后重新启动服务。sudo systemctl restart systemd-journald
。
用于man journald.conf
获取更多信息。
编辑:
正如@reinierpost 所解释的
这个问题不是关于常规的旧日志,而是关于似乎根本不包含任何日志的旧日志文件(但它们仍然每个占用 8 MB)。
尝试跑步journalctl --verify
。如果文件未通过,则日志已损坏,您应该重新启动服务。
sudo systemctl restart systemd-journald
Run Code Online (Sandbox Code Playgroud)
这应该可以解决未来日志的问题。
至于为什么会这样,我不知道,也不容易弄清楚。是的,损坏的文件可能是垃圾。你可以尝试这个来重新开始。