journalctl 按启动会话筛选并导出日志
排查一次重启后的服务异常时,先别把整本 journal 全量导出。更稳的做法是先用 journalctl --list-boots --no-pager 找到目标启动,再用 -b 锁定会话,最后根据用途选择人读文本或结构化格式保存。
官方手册:https://www.freedesktop.org/software/systemd/man/255/journalctl.html
--list-boots给出相对编号、Boot ID 和首末时间,先定位再过滤。-b -1表示上一次启动;跨机器或长期归档时优先记录完整 Boot ID。-o short-full适合人工阅读,-o export适合保留结构化日志记录。
先用 --list-boots 找到要调查的启动会话
启动编号是相对当前日志集合的定位方式,不是永久不变的主键。先执行下面的命令,重点看三列:相对启动编号、32 位 Boot ID,以及该次启动的第一条和最后一条日志时间。
# 关闭分页,便于把启动列表保存到工单或文件
journalctl --list-boots --no-pager
# 只看最近三次启动,避免列表过长
journalctl --list-boots -n 3 --no-pager
示例输出只用于说明字段关系,数字不代表本文作者机器的真实结果:
-2 4c2d...9a10 Mon 2026-09-28 08:10:03 CST—Mon 2026-09-28 18:41:22 CST
-1 7a91...d4e2 Tue 2026-09-29 07:52:10 CST—Tue 2026-09-29 09:06:18 CST
0 b6f0...aa31 Tue 2026-09-29 09:06:29 CST—Tue 2026-09-29 10:15:02 CST

用 -b 偏移或完整 Boot ID 筛选目标会话
确定目标后,-b 可以接相对偏移,也可以接完整 Boot ID。空的 -b 默认看当前启动,-b -1 看上一次启动,-b -2 再向前一轮。若调查材料要跨机器传递,建议把列表中的完整 ID 一并记录,避免“第 2 次启动”在另一台机器上产生歧义。
# 查看当前启动的内核与系统日志,-k 只保留内核消息
journalctl -b -k --no-pager
# 查看上一次启动,并按服务单元继续收窄
journalctl -b -1 -u ssh.service --no-pager
# 用完整 Boot ID 锁定会话;ID 必须替换为 --list-boots 得到的真实值
journalctl -b 7a91...d4e2 --no-pager
多个条件通常是同时成立的:启动会话、服务单元、优先级或时间范围会共同收窄结果。不要先用模糊的文本管道替代这些字段过滤,否则容易把相邻启动的同名服务混进来。
按用途选择日志导出格式
人工复盘与机器归档不是同一种输出需求。人读时应保留完整时间、时区和消息;交给后续工具或需要尽量保留字段时,可以使用 Journal Export Format。导出前加 --no-pager,避免 less 接管输出;跨时区协作时可加 --utc。
| 目标 | 命令要点 | 适合场景 |
|---|---|---|
| 人工阅读 | -o short-full | 工单、复盘、按时间对照 |
| 结构化保存 | -o export | 保留字段、交给解析工具 |
| 限制范围 | -b + -u/-p | 只看一次启动中的服务或级别 |
# 导出上一次启动的人读日志;重定向文件由当前 shell 创建
journalctl -b -1 -o short-full --no-pager --utc > boot-previous.log
# 导出同一会话的 Journal Export Format,保留结构化字段
journalctl -b -1 -o export --no-pager > boot-previous.export

权限、持久化和旧启动缺失的排查边界
如果普通用户只能看到自己的日志,先确认是否有读取系统 journal 的权限;临时处理可以使用 sudo journalctl ...,长期则按发行版的日志访问组和最小权限策略配置。权限不足与“没有这次启动的日志”是两类问题,不要混在一起判断。
列表里没有更早的启动,可能是日志只保存在运行时目录、旧文件已轮转清理,或当前查询的目录不是目标机器。此时先检查 journald 的持久化配置和保留策略,再决定是否能恢复;单纯把 -b -2 改成别的数字不能创造已经被删除的记录。
常见问题:为什么 -b -1 找到的不是我以为的那次重启?
-1 是当前查询日志集合中的上一启动,不是按业务事件命名的“上周重启”。先看 --list-boots 的时间范围,再用完整 Boot ID 固定证据。
常见问题:导出的文件为什么看起来没有换行或字段很多?
export 面向结构化记录,不等同于普通文本日志。人工阅读请选择 short-full;需要解析字段时再保留 export,不要用文本格式猜字段边界。
常见问题:能否只导出某个时间段?
可以在启动条件上叠加 --since 和 --until。先锁定 -b,再加时间范围,才能避免同一时刻相邻启动的记录混入。
Go database/sql Rows 未关闭造成连接耗尽的诊断
- 上一篇
- Go database/sql Rows 未关闭造成连接耗尽的诊断
- 下一篇
- 米坛社区工具下载入口怎么找?AstroBox、表盘自定义工具与 Notify 区分说明
-
- 文章 · linux | 3小时前 | Linux · Linux防火墙 nftables verdict map 多端口策略
- nftables verdict map 组织多端口策略的规则设计
- 475浏览 收藏
-
- 文章 · linux | 5小时前 | 权限控制 · 服务管理 · systemd socket激活 systemd.socket ListenStream Accept
- systemd socket 激活服务的依赖与监听配置
- 229浏览 收藏
-
- 文章 · linux | 1天前 |
- Linux ip rule 怎么按来源地址选择路由表
- 347浏览 收藏
-
- 文章 · linux | 1天前 | Linux · 文件系统 · Linux mount bind mount remount
- Linux bind mount 怎么二次挂载为只读
- 116浏览 收藏
-
- 文章 · linux | 1天前 |
- systemd-sysusers 怎么声明软件包所需系统账号
- 150浏览 收藏
-
- 文章 · linux | 1天前 |
- systemd-tmpfiles 怎么按文件年龄自动清理目录
- 464浏览 收藏
-
- 文章 · linux | 2天前 |
- cgroup v2 memory.high 与 memory.max 有什么区别
- 481浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- PubMedQA
- 深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
- 258次使用
-
- H2O EvalGPT
- H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
- 302次使用
-
- LMArena
- LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
- 281次使用
-
- HELM
- 深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
- 259次使用
-
- MMBench
- MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
- 68次使用
-
- 详解golang执行Linuxshell命令完整场景下的使用方法
- 2023-01-07 426浏览
-
- go程序部署到linux上运行的实现方法
- 2023-01-02 387浏览
-
- Linux系统下Go语言开发环境搭建
- 2023-01-07 242浏览
-
- 使用golang获取linux上文件的访问/创建/修改时间
- 2022-12-31 238浏览
-
- 在Linux系统中安装Go语言的详细教程
- 2022-12-29 402浏览

