为何`journalctl --list-boots`仅显示当前启动?如何跨重启查看历史启动日志?
如何跨重启持久化查看journalctl历史启动日志
我之前也碰到过一模一样的情况——内核更新后系统崩溃,切换旧内核后用journalctl --list-boots找不到崩溃那次的启动记录,这大概率是因为你的systemd-journald默认没开启持久化日志存储。默认情况下,很多Linux发行版会把journal日志存在内存里的/run/log/journal目录,重启后这部分日志就会被清空,自然看不到之前崩溃那次的记录。
下面是具体的解决步骤,分两步:先配置持久化存储,再查看历史日志(如果之前的日志还没被完全清理的话):
1. 开启journal日志持久化存储
步骤1:创建持久化日志目录并设置权限
首先需要创建一个磁盘上的目录来存储日志,执行以下命令:
sudo mkdir -p /var/log/journal sudo chown root:systemd-journal /var/log/journal sudo chmod 2755 /var/log/journal
步骤2:修改systemd-journald配置文件
编辑/etc/systemd/journald.conf文件,比如用nano编辑器:
sudo nano /etc/systemd/journald.conf
找到#Storage=auto这一行,把注释去掉(删掉#),然后把值改成persistent,修改后应该是:
Storage=persistent
保存退出后,重启systemd-journald服务让配置生效:
sudo systemctl restart systemd-journald
2. 查看历史启动日志
配置完成后,后续所有启动的日志都会被持久化保存到磁盘上,下次再遇到崩溃切换内核的情况,就能用以下方法查看:
先列出所有已记录的启动记录(包括之前的持久化记录):
journalctl --list-boots输出里每一行的第一个字段是相对编号(比如
-1代表上一次启动,-2代表上上次),第二个字段是启动ID。查看某一次启动的完整日志,比如上一次崩溃的启动:
journalctl -b -1或者用具体的启动ID查看:
journalctl -b <启动ID>
补充说明
- 如果崩溃那次的日志已经因为之前没开持久化而被清空了,那这次配置后只能记录后续的启动日志,无法恢复之前的。
- 可以在
journald.conf里设置日志大小限制,比如添加SystemMaxUse=500M,避免日志占满磁盘空间。
内容的提问来源于stack exchange,提问作者WinEunuuchs2Unix




