Linux 系统死机:常见原因和定位方法

Linux 系统死机:常见原因和定位方法

常见原因

  1. 驱动程序错误:错误或不兼容的内核驱动程序是常见的崩溃原因。
  2. 硬件故障:包括坏的内存条、故障的硬盘,或不稳定的电源供应。
  3. 内存耗尽:当系统内存或交换空间耗尽时可能导致系统崩溃。
  4. 文件系统错误:损坏的文件系统或磁盘错误也可能导致系统崩溃。
  5. 内核bug:Linux内核中的代码错误可能导致系统不稳定。

定位方法

1. 使用Debug口

接debug口,复现死机现象,查看系统控制台消息。

2. 内核崩溃转储 (Kernel Crash Dump)

(1). 开启核心转储

在系统开机脚本添加以下命令以启用核心转储:

ulimit -c unlimited
echo 1 > /proc/sys/kernel/core_uses_pid
echo "/root/corefile-%e-%p-%t" > /proc/sys/kernel/core_pattern
(2). 使用GDB调试core文件

制造一个Segmentation fault错误来生成core文件。例如,编写以下C程序:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char **argv) {
    int *p = NULL;
    *p = 100; // 这将产生 Segmentation fault
    return 0;
}

编译并运行程序:

gcc -o hello hello.c -g
./hello

这将在/root目录生成一个core-xxx-xxx-xxx文件。使用GDB调试core文件:

gdb hello core

3. 内存测试

使用memtest命令检查物理内存是否存在问题。

4. 查看日志文件

检查/var/log目录下的日志文件,特别是/var/log/kern.log/var/log/syslog。这些日志可能包含崩溃前的最后几条消息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

黄金门票

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值