Linux中的Kdump服务

我们知道在Linux中系统分为内核态和用户态,一般用户行为都发生在用户态,内核自我管理。但如果内核出现错误崩溃了,可以使用Kdump来分析错误原因。

Kdump服务提供了内核的崩溃转储机制,可以在内核崩溃时保存系统内存信息。Kdump使用kexec系统调用在崩溃时进入第二kernel抓取保存崩溃内核的内存信息,the second kernel以服务的形式占用一部分系统内存。也就是说Kdump服务利用系统内存提供了一个临时备用的内核得以保存内核日志信息。

安装Kdump

Kdump服务由kexec-tools包提供,安装命令为

$ rpm -q kexec-tools
$ yum install kexec-tools

注意,内核崩溃转储机制需要内核命令行参数设置崩溃转储,必须在引导“第一内核”期间为捕获内核保留 crashkernel 的内存。需要在/etc/default/grub配置中设置crashkernel=256M。
pratyush_f1.png

当内核崩溃时,崩溃日志core dump可以保存在文件,远程设备,或者网络设备中,如果不设置一般保存在/var/crash/目录中,如果要修改保存位置,可以修改/etc/kdump.conf配置文件中 patch 参数的地址。

Kdump服务管理

Kdump是以服务形式管理的

  • 启用kdump
$ systemctl enable kdump.service
  • 启动kdump
$ systemctl start kdump.service
  • 停止kdump
$ systemctl enable kdump.service
  • 禁用kdump
$ systemctl disable kdump.service

强制内核崩溃

可以通过人工方式手动使内核崩溃

$ systemctl is-active kdump
$ echo 1 > /proc/sys/kernel/sysrq
$ echo c > /proc/sysrq-trigger
$ reboot

重启后可以在/var/crash/目录下看到vmcore日志文件

crash工具

如果Kdump正常工作成功获取了内核的崩溃日志,那么下一步就是分析崩溃日志,我们可以使用crash工具来查看vmcore日志文件

crash工具一个类似GDB的分析core dump的工具

安装crash

$ yum install crash
$ yum install kernel-debuginfo

使用crash分析日志

$ crash /usr/lib/debug/lib/modules/4.18.0-5.el8.x86_64/vmlinux /var/crash/127.0.0.120190-03-01-11:06:33/vmcore

我们可以看到crash命令第一个参数是当前系统的debug-info,第二个参数时vmcore文件

执行crash命令后会进入crash工具的CLI
可以输入更多命令操作

#  display messages buffer
$ crash> log
# display kernel backtrace
$ crash> bt
# display process status
$ crash> ps
# display virtual memory
$ crash> vm
# display open files
$ crash> files
Image placeholder
haobing
未设置
  27人点赞

没有讨论,发表一下自己的看法吧

推荐文章
Fish Redux中的Dispatch是怎么实现的?

前言开源地址:https://github.com/alibaba/fish-redux我们在使用fish-redux构建应用的时候,界面代码(view)和事件的处理逻辑(reducer,effe

Linux中的软链接和硬链接

微信公众号:爱问CTO专业编程问答社区www.askcto.com 问题出现问题1:Linux中软链接和硬链接的区别?问题2:Linux系统内部是通过文件名访问文件的吗?基础铺垫平时在Linux系统中

Java 程序员眼中的 Linux_1.0.Linux 介绍

Linux介绍 Linux这个名字 Linux的Wiki介绍:http://zh.wikipedia.org/zh/Linux Linux也称:GNU/Linux,而其中GNU的全称又是:Gnu’sN

[Java 程序员眼中的 Linux] Linux 下常用压缩文件的解压、压缩

Linux下常用压缩文件的解压、压缩 常用压缩包解压命令整理 Linux后缀为.tar.gz格式的文件-解压 命令:tarzxvfXXXXXX.tar.gz Linux后缀为.bz2格式的文件-解压

全网最通俗易懂的Kafka入门

前言只有光头才能变强。文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y众所周知,消息队列的产品有好几种,这里我选择学习Kafka

笨办法 学Linux 安装Linux

Linux学习起步 Windows,VirtualBox虚拟机(.ova格式的预配置映像) 学习Linux你需要什么 VitualBox,虚拟机播放器。 putty,终端模拟器。 预配置的Virtua

Linux/Unix 基础:什么是 Linux?

简单来讲,Linux是一个操作系统(OS)。我们都很熟悉其他操作系统,就像Microsoftwindows,AppleMacOS,iOS,Googleandroid,等等这些,linux就像它们一样,

Linux/Unix 基础:Linux 的历史

Linux的诞生 在1991年,来自芬兰Helsinki大学的学生LinusTorvalds认为市场上应该有一个比较统一的Unix版本,从此他就开始为这个项目奋斗。后来这个项目就成为了Linux操作系

别小瞧了 Linux,安卓、华为的自研系统,均源自 Linux!

众所周知,目前国内已有众多的国产系统,基本上均源自linux,以linux为基础进行二次开发。比如红旗linux、深度等等。但不知道为什么,一说起某系统是基于linux而来,很多网友就瞧不起,并且会觉

慢查询分析调优工具~mysqldumpslow

在日常的业务开发中,MySQL出现慢查询是很常见的,要么说明你家产品的增长性很好,要么就是你的SQL写的太烂了。所以对慢查询SQL进行分析和优化很重要,其中mysqldumpslow是MySQL服务自

【Linux 工具】服务器文件传输利器 lrzsz

场景  服务端开发人员经常会遇到的一个场景就是将本地的文件传到服务器上,或者把服务器上的文件下载到本地,那这个时候大家一般会用ftp服务,来完成这件事。但是如果服务器上并没有安装ftp服务的时候,这个

Linux服务器为什么被黑?

安全是IT行业一个老生常谈的话题了,从之前的“棱镜门”事件中折射出了很多安全问题,处理好信息安全问题已变得刻不容缓。因此做为运维人员,就必须了解一些安全运维准则,同时,要保护自己所负责的业务,首先要站

保护Linux服务器的7个步骤

本文将向您介绍基本的Linux服务器安全保护措施,侧重于Debian/Ubuntu,但是您可以将本文介绍的所有内容应用于其他Linux发行版。1.更新你的服务器要保护服务器,您应该做的第一件事是更新本

124. Binary Tree Maximum Path Sum - 二叉树中的最大路径和

1描述给定一个非空二叉树,返回其最大路径和。路径:一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。用例 输入:[1,2,3] 1 /\ 23 输出:6输入:

初识 redux

redux介绍 单向数据流:从父组件流向子组件,兄弟组件无法共享数据 State:React中的状态,是只读对象,不可直接修改 Reducer:基本函数,用于对State业务的处理 Action:普通

初识 redux

redux介绍 单向数据流:从父组件流向子组件,兄弟组件无法共享数据 State:React中的状态,是只读对象,不可直接修改 Reducer:基本函数,用于对State业务的处理 Action:普通

UI2CODE再进化!结合Redux的框架升级!

背景UI2CODE的目标是通过分析视觉稿得到对应的代码,让AI提高开发效率。然而过去静态化页面的产出,不能得到业务场景的需求。针对于此,我们以UI2CODE自动化开发为基底,结合Redux的消息机制,

Linux Shell 脚本快速入门

shell脚本是在一个文件中写入一起执行的命令集。对于使用像dos操作系统的DOS,windows操作系统的bat,linux操作系统的files的人来说,这几乎都是相同的概念。你只需要把一串命令写

Linux 安装 Node.js

因为我用最简单yum命令安装node.js发现node的版本不是最新的所以自己手动安装了nodejs流程如下 进入服务器安装nodejs安装包 进入保存包的目录 $cddownload 下载二进制

Linux 安装 Node.js

因为我用最简单yum命令安装nodejs发现node的版本不是最新的所以自己手动安装了nodejs流程如下 进入服务器安装nodejs安装包 进入保存包的目录 $cddownload 下载二进制包

Linux Shell 脚本快速入门

shell脚本是在一个文件中写入一起执行的命令集。对于使用像dos操作系统的DOS,windows操作系统的bat,linux操作系统的files的人来说,这几乎都是相同的概念。你只需要把一串命令写入

Linux 文件同步工具之 rsync

学习背景 1.最近公司的项目在使用jenkins做自动化构建,因为jenkins在构建时是比较耗性能的,便单独使用了一台服务器做构建服务器。但是个人觉得这样成本过高,单独拿一台服务器来构建并且该服务器

笨办法学 Linux 学习文本编辑器--vim

Linux学习文本编辑器--vim 在Linux中,就像任何类Unix操作系统,一切都只是文件。而Unix哲学指出,配置文件必须是人类可读和可编辑的。在几乎所有的情况下,它们只是纯文本。所以,首先,你

笨办法学 Linux 初识less

#文本浏览器,少即是多 现在你可以编辑文本文件,这很好。但是如果你只想查看一个文本文件呢?当然,你可以使用vim,但很多时候它是过度的。还有两件事要考虑: 如果你想查看非常大的文件,你将需要在尽可能快

笨办法学 Linux Bash:Shell、`.profile`、`.bashrc`、`.bash_history`

Bash:Shell、.profile、.bashrc、.bash_history。 当使用CLI(命令行界面)来使用Linux时,你正在与一个名为shell的程序进行交互。所有你输入的都传递给she