Linux系统“死机”时解决方法

如果问题能够再现,那么问题已经解决 80% 了。对于操作系统核心而言,如果有问题的再现方法,那么可以说是已经解决 99% 了。经常遇到的问题是系统可以正常运行一段时间,然后死机。如果不好再现问题,那么只有根据死机现场遗留的东西来进行分析了。

如果系统没有死干净,比如磁盘中断和文件系统是好的,那么也许能有日志信息保留在文件中,不过这样的好运气我是从来没有遇到过的。如果键盘中断还能响应 (按下Num Lock,可以看见键盘小灯亮灭),那么运气就算是足够好了,这时可以祭出 sysrq 大法,同时按下 Alt-Sysrq-T 获得进程系统堆栈信息,按下 Alt-Sysrq-M 获得内存分配信息,按下 Alt-Sysrq-W 获得当前寄存器信息。

linux/Documentation/sysrq.txt。另外,最好关闭终端的自动 blank 功能,这样系统死的时候至少能从屏幕上看到一些信息。设置方法是:

# echo 1 > /proc/sys/kernel/sysrq

# setterm -blank 
这两个设置最好加到系统启动脚本中 (比如 /etc/rc.d/rc.local),保证每次启动都能得到运行。 
如果很不幸,键盘也死悄悄了,(更为不幸的是,这种情况很常见),那么也不是只有等死一个办法,这时可以用串口终端 (serial console)将系统信息发送

到另一台系统上,这样可以通过对这些信息分析来定位问题。设置方法如下:

准备工作

1. 一台被监视的服务器,一台进行监视工作的PC。 
2. 一根串口直连线。 
配置 
1. 在服务器上,加入一个新的 grub 项目,增加核心参数 "console=ttyS0 console=tty1",如: 
kernel /boot/vmlinuz-2.4.21-9.30AXsmp ro root=LABEL=/1 console=ttyS0 
console=tty1 
2. 在服务器上,修改 /etc/sysconfig/syslog,加入 klogd 选项 "-c 7",保证更多内核信息得到输出。如: 
KLOGD_OPTIONS="-x -c 7" 
3. 重新启动服务器 
4. 用串口直连线连接两台机器,测试: 
1) 在PC上运行 "cat /dev/ttyS0",在服务器上运行 "echo hi > /dev/ttyS0",看在 PC 上是否有 "hi" 输出。 
2) 在PC上运行 "cat /dev/ttyS0",在服务器上运行 "echo w > /proc/sysrq-trigger",看 PC 上是否有相应内核信息输出。 
3) 在PC上运行 "cat /dev/ttyS0",在服务器上运行 "modprobe loop",看 PC 上是否有相应内核信息输出。 
5. 如果测试通过,那么在 PC 上运行:cat /dev/ttyS0 | tee /tmp/result 
另外,也可以用 Windows 超级终端获得串口信息。 
that's it. 
此外,一些核心支持 LKCD, netdump 等调试功能,也可以一试。 
剩下的,就只有靠经验和运气了,一般造成 Linux 系统死机的原因有: 
系统硬件问题 (SCSI 卡,主板,RAID 卡,网卡,硬盘...) 
外围硬件问题 (终端切换器,网络...)

软件问题

驱动 bug (去找更新的驱动试试)

核心系统 bug (去 LKML 上看看,或换个核心试试)

系统设置

最后,google一把。有时候你可以直接输入 "Linux 系统死机怎么办?"

PE6650 经常死机",看有没有人遇到过和你同样的问题。即使没有找到,也是一个有助于分析问题的信息,至少说明你的系统可能有和其他人不同之处。

调查 Linux 系统死机问题,这既是科学又是艺术,牵扯到众多的硬件软件知识和经验,是一个不断学习的过程

(0)

相关推荐

  • Linux系统“死机”时解决方法

    如果问题能够再现,那么问题已经解决 80% 了.对于操作系统核心而言,如果有问题的再现方法,那么可以说是已经解决 99% 了.经常遇到的问题是系统可以正常运行一段时间,然后死机.如果不好再现问题,那么只有根据死机现场遗留的东西来进行分析了. 如果系统没有死干净,比如磁盘中断和文件系统是好的,那么也许能有日志信息保留在文件中,不过这样的好运气我是从来没有遇到过的.如果键盘中断还能响应 (按下Num Lock,可以看见键盘小灯亮灭),那么运气就算是足够好了,这时可以祭出 sysrq 大法,同时按下 

  • 虚拟机安装linux系统无法上网的解决方法

    周末闲来无事,用虚拟机安装了centos6.5系统,安装成功后发现不能连接网络,然后我就一脸蒙蔽了,无奈之下,只能百度查找问题,幸运的是,我还真找到了解决的方法,根据教程一步步操作,成功了!为了避免以后蒙蔽,我打算记录下来,同时如果有其他工程师遇到和我一样的问题,可以考虑一下我下面介绍的方法 1.打开虚拟机,如果[网络适配器]选择的不是NAT模式,我们需要改成NAT模式,并进行保存 2.打开cmd,输入命令:services.msc,回车后会弹出服务和应用程序页面,我们需要找到VMware DH

  • 通过 SSH 在远程 Linux 系统上运行命令的方法

    我们有时可能需要在远程机器上运行一些命令.如果只是偶尔进行的操作,要实现这个目的,可以登录到远程系统上直接执行命令.但是每次都这么做的话,就有点烦人了.既然如此,有没有摆脱这种麻烦操作的更佳方案? 是的,你可以从你本地系统上执行这些操作,而不用登录到远程系统上.这有什么好处吗?毫无疑问.这会为你节省很多好时光. 这是怎么实现的?SSH 允许你无需登录到远程计算机就可以在它上面运行命令. 通用语法如下所示: $ ssh [用户名]@[远程主机名或 IP] [命令或脚本] 1) 如何通过 SSH 在

  • Linux系统使用Fuser命令的方法

    什么是Fuser命令? fuser命令是一个非常聪明的unix实用程序,用于查找正在使用某个文件.目录或socket的进程. 它还提供有关拥有该进程的用户和访问类型的信息..fuser工具显示了使用指定文件或文件系统的每个进程的进程ID(PID). 安装 如果你的精简版运行fuser提示如下信息: -bash: fuser: command not found 请执行如下命令安装: [winbert@winbert-server ~]$ sudo yum -y install psmisc 如何

  • 在linux系统下安装redis的方法

    去官网找到合适的版本,可以直接下载下来,再用fxp上传,也可以直接以下面这种方式下载: $ wget http://download.redis.io/releases/redis-3.2.9.tar.gz $ tar xzf redis-3.2.9.tar.gz $ cd redis-3.2.9 $ make 启动服务: $ src/redis-server 测试是否成功: $ src/redis-cli redis> set foo bar OK redis> get foo "

  • Linux系统下SystemC环境配置方法

    以下为centos7下配置方法 下载systemc源码包:SystemC (accellera.org) 将压缩包放置到用户目录下,并解压 tar -zxvf systemc-2.3.3.tar.gz 进入到systemc-2.3.3文件夹 cd systemc-2.3.3 新建临时文件夹tmp,并进入其中 mkdir tmpcd tmp 运行如下命令 ../configure make make install 至此,文件夹中生成include与lib-linux64两个文件夹 设置环境变量

  • Java系统的高并发解决方法详解

    一个小型的网站,比如个人网站,可以使用最简单的html静态页面就实现了,配合一些图片达到美化效果,所有的页面均存放在一个目录下,这样的网站对系统架构.性能的要求都很简单,随着互联网业务的不断丰富,网站相关的技术经过这些年的发展,已经细分到很细的方方面面,尤其对于大型网站来说,所采用的技术更是涉及面非常广,从硬件到软件.编程语言.mysql" target="_blank" title="MySQL知识库">数据库.WebServer.防火墙等各个领域

  • 详解Linux中文乱码问题终极解决方法

    初入linux的程序员们,经常会受到乱码的问候.可谓"始乱终弃".因为乱码,并且最终放弃了linux的不在少数.好吧,言归正传,下面来看一下linux乱码的具体解决办法吧. 方法一: 修改/root/.bash_profile文件,增加export LANG=zh_CN.GB18030 该文件在用户目录下,对于其他用户,也必须相应修改该文件. 使用该方法时putty能显示中文,但桌面系统是英文,而且所有的网页中文显示还是乱码 方法二: 修改/etc/sysconfig/i18n文件 #

  • 电脑意外关机后VMware中linux不能联网问题的解决方法

    问题描述:之前已经配置过linux系统的网卡文件/etc/sysconfig/network-scripts/ifcfg-eth0了,依靠NAT服务能正常访问外网.但在电脑意外关机,导致VMware被强制关闭后,再次开机启动VMware时,发现用远程连接工具并不能连接到虚拟机中的linux,而且在cmd和虚拟机中互相ping对方ip地址,发现并不能ping通同时linux也不能访问外网. 解决办法:目前发现的解决办法有两个 (1)在关闭linux系统后,点击VMware中菜单栏中"编辑"

  • ntoskrnl.exe丢失系统无法启动的解决方法

    这阵子,家里电脑系统启动不了啦.出现提示"因以下文件损坏或丢失Windows无法启动%systemroot%\system32\ntoskrnl.exe,请重新安装以上文件的拷贝."很是郁闷,然后重启,按F8进入安全模式,没问题.有时,多启动几次(硬重启),嘿,就好了.ntoskrnl.exe文件是关键. 先了解这个ntoskrnl.exe文件是何许人物. ntoskrnl - ntoskrnl.exe - 进程信息  进程文件: ntoskrnl 或者 ntoskrnl.exe 进程

随机推荐