0

0

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

冷炫風刃

冷炫風刃

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

|

212人浏览过

|

来源于php中文网

原创

dmesg中真正的崩溃线索需用dmesg -t | grep -e "(panic|oops|bug|die|warning: cpu)"过滤,并结合/var/log/kern.log或/messages、edac/mce硬件错误日志及时间戳向前追溯。

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

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

Linux 崩溃后,dmesg 是第一手现场,但默认输出全是滚动日志,真正致命的错误(比如 Kernel panicOopsBUG: 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 MCmce: Hardware error 日志,它们可能比 panic 早几秒出现,得往前翻 20–30 行

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

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

实操要点:

Pliny
Pliny

创建、分享和重新组合AI应用程序

下载
  • 先确认 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 resetataX.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工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

智谱清言 - 免费全能的AI助手
智谱清言 - 免费全能的AI助手

智谱清言 - 免费全能的AI助手

相关专题

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

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

246

2023.09.22

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

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

886

2024.03.01

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

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

246

2023.09.22

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

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

886

2024.03.01

scripterror怎么解决
scripterror怎么解决

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

391

2023.10.18

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

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

348

2023.10.25

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

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

71

2025.10.23

Golang channel原理
Golang channel原理

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

256

2025.11.14

batoto漫画官网入口与网页版访问指南
batoto漫画官网入口与网页版访问指南

本专题系统整理batoto漫画官方网站最新可用入口,涵盖最新官网地址、网页版登录页面及防走失访问方式说明,帮助用户快速找到batoto漫画官方平台,稳定在线阅读各类漫画内容。

21

2026.02.25

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PostgreSQL 教程
PostgreSQL 教程

共48课时 | 9.6万人学习

Git 教程
Git 教程

共21课时 | 3.8万人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号