讲师中心 微信公众号
AI工具推荐 视频效率加速

Linux 崩溃日志分析与恢复实践

风丽吖_1211

风丽吖_1211

发布时间:2026-02-25 12:09:12

|

392人浏览过

|

来源于php中文网

原创

dmesg中真正的崩溃线索需用dmesg -T | grep -E "(panic|Oops|BUG|die|WARNING: CPU)"过滤,并结合/var/log/kern.log或/messages、EDAC/MCE硬件错误日志及时间戳向前追溯。

linux 崩溃日志分析与恢复实践

怎么看 dmesg 里真正的崩溃线索

Linux 崩溃后,dmesg 是第一手现场,但默认输出全是滚动日志,真正致命的错误(比如 Kernel panic、Oops、BUG: unable to handle kernel NULL pointer dereference)往往被刷走或混在大量驱动初始化信息里。

关键不是翻屏,而是过滤和定位:

  • 立刻执行 dmesg -T | grep -E "(panic|Oops|BUG|die|WARNING: CPU)" —— -T 加上本地时间戳,避免时区混淆;grep 用正则抓核心关键词,比肉眼扫快得多
  • 如果系统还能进,优先看 /var/log/kern.log(Debian/Ubuntu)或 /var/log/messages(RHEL/CentOS),这些是 syslog 持久化后的 dmesg 快照,更稳定
  • 注意时间戳对齐:硬件故障(如内存坏块)常伴随 EDAC MC 或 mce: Hardware error 日志,它们可能比 panic 早几秒出现,得往前翻 20–30 行

systemd-journald 崩溃前的日志能捞出来吗

能,但前提是 journal 没被配置成 volatile 模式,且崩溃没直接干掉 journald 进程本身。很多用户以为 journal 日志“全丢了”,其实是没找对位置或权限不对。

实操要点:

Obsidian (Linux)
Obsidian (Linux)

操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。

下载
  • 先确认 journal 是否持久化:ls /var/log/journal/ —— 如果目录为空或根本不存在,说明 journal 默认写在 /run/log/journal/(内存临时目录),重启即丢
  • 恢复上次启动的完整日志:journalctl --boot=-1(注意是 =-1,不是 -1);如果崩溃后还能进系统,这个命令大概率能拿到崩溃前 5–10 分钟的用户态服务行为(比如 postgres 卡死、dockerd segfault)
  • 权限问题常见:普通用户执行 journalctl 可能看不到内核或系统服务日志,加 sudo 或确保用户在 systemd-journal 组里

coredump 文件在哪、怎么确认它真生成了

崩溃未必产生 coredump,即使开了,也常因路径、权限、大小限制被静默丢弃。别只查 /var/lib/systemd/coredump/ 就算完。

三步验证:

  • 查是否启用:systemctl status systemd-coredump 看是否 active;再看 sysctl kernel.core_pattern —— 如果返回 |/usr/lib/systemd/systemd-coredump,说明走 systemd 管理;如果是 /tmp/core.%e.%p 这类路径,说明走传统内核机制
  • 查磁盘空间和配额:systemd-coredump 默认限制单个 core 2G、总量 16G,超限就删老文件;用 coredumpctl list 看有没有记录,空输出 ≠ 没崩溃,可能是被自动清理了
  • 手动触发测试:kill -SEGV $$(对自己 shell 发信号),然后立刻 coredumpctl list | head -3,确认流程通不通——这比等真崩溃再排查快得多

硬件故障迹象藏在哪几行 dmesg 里

内存、硬盘、PCIe 设备出问题,Linux 内核会记,但提示非常克制,不像 Windows 那样弹蓝屏代码。重点盯这几类行:

  • EDAC MC0: Giving out device to module skx_edac controller Skylake Socket #0 Channel #0: DEV 0000:ff:05.0 —— EDAC 行代表内存校验纠错已触发,后面若跟 CE(Correctable Error)还能扛,UE(Uncorrectable Error)就是硬错误,大概率要宕机
  • nvme nvme0: Device not ready; aborting reset 或 ataX.00: failed command: READ FPDMA QUEUED —— NVMe 或 SATA 盘响应超时,不是线缆松动就是固件/坏道问题,这类错误常在 panic 前反复出现 3–5 次
  • PCIe Bus Error: severity=Corrected, type=Physical Layer, (Receiver ID) —— PCIe 链路层错误,尤其是 severity=Fatal 时,基本可锁定主板插槽、显卡或 NVMe 扩展卡接触不良

这些线索不会自己标红加粗,得你主动 grep 和纵向比对时间戳。最麻烦的是多设备交叉影响——比如内存错误导致 NVMe 驱动误判超时,最终 panic 显示的是 disk 错误,但根子在 RAM。这时候不能只盯最后一行。

热门AI工具

更多
墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

创客贴AI

创客贴AI是一款AI图像与设计工具,AI辅助的智能在线设计工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

Seko
Seko Hot

一款AI视频创作工具,主要用于商汤科技推出的创编一体的AI短视频创作Agent,适合需要提升相关任务效率的用户。

超级麦吉

一款通过数字员工协作完成调研、数据分析与文档制作的AI办公平台。

UP简历
UP简历 Hot

一款AI办公效率工具,主要用于基于AI技术的免费在线简历制作工具,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

更多
c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

549

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

1698

2024.03.01

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

549

2023.09.22

java中null的用法
java中null的用法

在Java中,null表示一个引用类型的变量不指向任何对象。可以将null赋值给任何引用类型的变量,包括类、接口、数组、字符串等。想了解更多null的相关内容,可以阅读本专题下面的文章。

1698

2024.03.01

scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

1009

2023.10.18

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3100

2023.10.25

c++中volatile关键字的作用
c++中volatile关键字的作用

本专题整合了c++中volatile关键字的相关内容,阅读专题下面的文章了解更多详细内容。

794

2025.10.23

Golang channel原理
Golang channel原理

本专题整合了Golang channel通信相关介绍,阅读专题下面的文章了解更多详细内容。

454

2025.11.14

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

100

2026.10.22

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn