按启动会话看日志
systemd 把每次内核启动记为一个 boot 会话:journalctl -b 看本次启动,-b -1 看上一次,--list-boots 列出全部会话编号。排查重启后故障自动消失这类问题,必须回到出问题的那个会话里找证据。前提是 journal 已持久化,否则重启后旧会话可能只剩会话元数据而看不到内容。
基本信息
| 本次启动 | journalctl -b |
|---|---|
| 上次启动 | journalctl -b -1 |
| 会话列表 | journalctl --list-boots |
| 指定会话 | journalctl -b <编号>,可为负号偏移 |
| 前提 | /var/log/journal 持久化已启用 |
典型使用场景
- 服务器异常重启后自愈,回看上一个会话里的报错
- 确认某个服务从第几次重启开始失败,定位变更时间点
- 核对上次关机是否正常,有无内核崩溃或内存耗尽记录
- 安全审计:按启动会话梳理登录与提权记录
- 与内核日志、硬件报错对照,区分软件问题与硬件问题
用法
用法
journalctl --list-boots # 列出全部启动会话与时间区间
journalctl -b -1 -p err --no-pager | tail -50 # 上次启动的错误级日志
journalctl -b -1 -u nginx --no-pager | tail -100 # 上次启动里指定服务
journalctl -b -1 -k | grep -i error # 上次启动的内核消息
journalctl -b -1 --since '2026-10-01' --until '2026-10-02' | tail -50
journalctl -b -1 -o short-precise | head -20 # 精确到微秒的时间戳现象与处理
| 现象 | 含义 | 处理 |
|---|---|---|
| --list-boots 只有一行 | 未持久化,仅当前会话 | 建 /var/log/journal 后重启 journald |
| -b -1 报找不到文件 | 旧会话日志已被清理 | 检查保留策略与容量限制 |
| 会话编号有断号 | 可能存在异常断电或崩溃 | 重点看对应会话的内核记录 |
| 会话时间即重启时间 | 记录正常 | 按时间区间定位更精确 |
要按会话查历史,在 /etc/systemd/journald.conf 设 Storage=persistent,或直接创建 /var/log/journal 目录,再重启 systemd-journald;RPM 系与 DEB 系机制相同。
journal 占用受 SystemMaxUse 限制,默认可能只有几百兆,日志量大的主机上历史会话容易被挤掉;重要节点提前调大限额或同时转发到集中日志服务器。
会话编号支持偏移写法,-b -2 表示倒数第二次启动;正数编号取自 --list-boots 的第一列,两种写法混用很容易看错会话。