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

Linux 内核 panic 分析与应急处理

星浩君_9602

星浩君_9602

发布时间:2026-02-20 15:23:57

|

533人浏览过

|

来源于php中文网

原创

内核panic表明Linux遭遇不可恢复错误,需通过串口/kdump捕获日志、启用kdump服务、测试crash触发、用crash工具解析vmcore、黑名单禁用问题模块来分析处理。

linux 内核 panic 分析与应急处理

当 Linux 系统运行过程中触发内核 panic,表明内核已遭遇无法恢复的严重错误,系统将主动中止所有操作并停止响应。以下是针对该异常状态的分析路径与应急处理步骤:

一、确认 panic 日志来源

内核 panic 发生时,关键错误信息通常输出至控制台或暂存于内存缓冲区,需在系统重启前尽可能捕获原始日志。若系统仍可访问串口或带外管理接口(如 iDRAC、iLO),应优先通过该通道获取完整堆栈。

1、若系统处于 panic 状态但未自动重启,立即切换至虚拟控制台(Ctrl+Alt+F2 至 F6)尝试查看是否仍有可读输出。

2、检查是否启用了 kdump 机制:执行 ls /var/crash/ 查看是否存在以时间戳命名的转储目录。

3、若使用 systemd,重启后执行 journalctl -b -1 | grep -i "panic\|oops\|fatal" 提取上一次启动的日志片段。

二、启用并验证 kdump 服务

kdump 是 Linux 内核提供的崩溃转储机制,它在预留内存中运行一个独立的捕获内核,用于保存 panic 时刻的内存镜像(vmcore),是后续分析的根本依据。

1、确认当前内核是否支持 kdump:执行 zcat /proc/config.gz | grep CONFIG_CRASH_DUMP 或检查 /boot/config-$(uname -r) 中 CONFIG_CRASH_DUMP=y。

2、安装 kdump 工具集:在 RHEL/CentOS 上运行 yum install kexec-tools;在 Debian/Ubuntu 上运行 apt install linux-crashdump。

3、编辑 /etc/kdump.conf,确保 path /var/crash 和 core_collector makedumpfile -c --message-level 1 -d 31 已配置。

4、启用并启动服务:执行 systemctl enable kdump && systemctl start kdump,随后验证状态为 active:systemctl status kdump。

三、手动触发 crash 测试 kdump 可用性

在受控环境中验证 kdump 是否正常工作,可避免真实 panic 时因配置失效导致无转储可用。该操作仅限测试环境执行,生产系统严禁运行。

1、确认 sysrq 已启用:检查 /proc/sys/kernel/sysrq 值为 1。

Linux Security Scanner
Linux Security Scanner

Linux 安全审计工具,检查 SSH 配置、开放/监听端口、防火墙规则(ufw/iptables/nftables)、失败登录尝试、sudoers 权限...

下载

2、向内核发送 crash 指令:执行 echo c > /proc/sysrq-trigger,系统将立即触发 panic 并由 kdump 捕获 vmcore。

3、重启后检查 /var/crash/ 下是否生成新目录,且其中包含 vmcore 与 vmcore-dmesg.txt 文件。

四、使用 crash 工具解析 vmcore

crash 工具是分析 vmcore 文件的核心命令行程序,需匹配目标内核版本的调试符号包(debuginfo)才能完成函数级堆栈还原与内存结构遍历。

1、安装对应内核的 debuginfo 包:RHEL/CentOS 执行 debuginfo-install kernel-$(uname -r);Ubuntu 需手动下载 linux-image-$(uname -r)-dbgsym 包。

2、加载 vmcore 与 vmlinux:执行 crash /usr/lib/debug/lib/modules/$(uname -r)/vmlinux /var/crash/$(date +%Y-%m-%d-%H:%M)/vmcore。

3、在 crash 交互界面中输入 bt -a 获取所有 CPU 的回溯信息,重点关注标记为 PANIC 的线程及首次出现的错误函数调用链。

4、使用 log 命令打印内核环形缓冲区内容,定位 panic 前最后几条警告或错误消息。

五、禁用 problematic 内核模块临时规避

若多次 panic 均指向同一驱动模块(如从 bt 输出中观察到 consistently in module xxx),可在启动阶段阻止其加载,实现快速业务恢复。

1、编辑 GRUB 配置文件 /etc/default/grub,在 GRUB_CMDLINE_LINUX 行末添加 modprobe.blacklist=xxx(xxx 替换为模块名)。

2、重新生成 GRUB 配置:RHEL/CentOS 执行 grub2-mkconfig -o /boot/grub2/grub.cfg;Ubuntu 执行 update-grub。

3、重启系统后验证模块未加载:lsmod | grep xxx 应无输出,且 dmesg | grep -i xxx 不再显示初始化失败记录。

热门AI工具

更多
SkildArt
SkildArt Hot

SkildArt是一款AI文本写作工具,一站式 AI 视觉创作平台。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

AionClaw
AionClaw Hot

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

超级麦吉

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

豆包大模型

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

WorkBuddy

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

DeepSeek

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

UpDream
UpDream Hot

一款AI视频创作工具,主要用于哔哩哔哩推出的自研AI视频创作工具,适合需要提升相关任务效率的用户。

相关专题

更多
硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

3188

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

5149

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3849

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

486

2026.01.19

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

6347

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2668

2023.08.10

堆和栈的区别
堆和栈的区别

堆和栈的区别:1、内存分配方式不同;2、大小不同;3、数据访问方式不同;4、数据的生命周期。本专题为大家提供堆和栈的区别的相关的文章、下载、课程内容,供大家免费下载体验。

6347

2023.07.18

堆和栈区别
堆和栈区别

堆(Heap)和栈(Stack)是计算机中两种常见的内存分配机制。它们在内存管理的方式、分配方式以及使用场景上有很大的区别。本文将详细介绍堆和栈的特点、区别以及各自的使用场景。php中文网给大家带来了相关的教程以及文章欢迎大家前来学习阅读。

2668

2023.08.10

Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

60

2026.10.28

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
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