Notes
journalctl:把上一次启动单独拿出来看
按启动批次与时间窗口筛日志,并区分没有记录和没有发生。
机器重启后再查故障,容易把本次启动的信息当成重启前的现场。使用 systemd journal 的主机,可以先按启动批次分开看,不必从所有日志里猜时间。
先列出仍然保存的启动记录
journalctl --list-boots --no-pager
journalctl -b -1 -n 80 --no-pager
第二条取上一次有记录的启动批次,显示最后 80 条。第一条同时列出 boot ID 与记录时间范围;需要留下可复查的定位信息时,记下 boot ID,后续可用 journalctl -b BOOT_ID 查询。相对编号会随日志集合变化,不能当成永久编号。
再收窄到服务和时间
下面的服务名与时间只是示例,需要替换成现场值:
journalctl -b -1 -u example.service \
--since '2026-09-09 20:00:00' \
--until '2026-09-09 20:10:00' \
-o short-iso-precise --no-pager
未写时区的时间按本机时区解释。筛选条件会叠加,窗口不对或服务名写错,都可能让输出为空。先看批次时间范围,再逐个加条件,比一次加满更容易发现是哪项筛掉了记录。
导出片段给别人看之前,还应检查账户、主机名与请求参数;系统日志不是默认可以公开的材料。
找不到上一批日志,不代表上次启动没有报错:记录可能没有持久化、已被轮转,或当前账户无权读取系统日志。必要时在获授权后用 sudo 查询。临时打开持久化也不能补回已经丢失的记录;这时不要为了“整理现场”执行 vacuum 清理。
依据:journalctl 官方手册。