You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

为何`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

火山引擎 最新活动