
如果系统没有死干净,比如磁盘中断和文件系统是好的,那么也许能有日志信息保留在文件中,不过这样的好运气我是从来没有遇到过的。如果键盘中断还能响应 (按下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 上看看,或换个核心试试)
系统设置
1、在同一个硬盘上安装太多的 *** 作系统会引起系统死机。2、cpu、显示卡等配件不要超频过高,要注意温度,否则,在启动或运行时会莫名其妙地重启或死机。
3、在更换电脑配件时,一定要插好,因为配件接触不良会引起系统死机。
4、bios设置要恰当,虽然建议将bios设置为最优,但所谓最优并不是最好的,有时最优的设置反倒会引起启动或者运行死机。
5、最好配备稳压电源,以免电压不稳引起死机。
6、如果有条件的话,加装一个ups,使电脑在停电后不会造成死机。
7、对来历不明的软盘和光盘,不要轻易使用,对e-mail中所附的软件,要用ESET、瑞星卡巴斯基等杀毒软件检查后再使用,以免传染病毒后,使系统死机。
8、在应用软件未正常结束时,别关闭电源,否则会造成系统文件损坏或丢失,引起自动启动或者运行中死机。对于windows98/2000/nt等系统来说,这点非常重要。
9、在安装应用软件当中,若出现提示对话框“是否覆盖文件”,最好选择不要覆盖。因为通常当前系统文件是最好的,不能根据时间的先后来决定覆盖文件(除非你对文件的时间很在意)。
10、在卸载软件时,不要删除共享文件,因为某些共享文件可能被系统或者其他程序使用,一旦删除这些文件,会使应用软件无法启动而死机,或者出现系统运行死机。
11、设置硬件设备时,最好检查有无保留中断号(irq),不要让其他设备使用该中断号,否则引起irq冲突,从而引起系统死机。
12、在加载某些软件时,要注意先后次序,由于有些软件编程不规范,在运行是不能排在第一,而要放在最后运行,这样才不会引起系统管理的混乱。
按住 Alt-Print 的时候就相当于按住了 Sys Rq 键,这个时候输入的一切都会直接由 Linux内核来处理,它可以进行许多低级 *** 作。这个方法可以在各种情况下安全地重启计算机,具体 *** 作如下:
1、shutdown命令安全地将系统关机。在系统关机前使用shutdown命令﹐系统管理员会通知所有登录的用户系统将要关闭。并且login指令会被冻结,即新的用户不能再登录。
2、halt——最简单的关机命令,其实halt就是调用shutdown -h。halt执行时﹐杀死应用进程﹐执行sync系统调用﹐文件系统写 *** 作完成后就会停止内核。
3、reboot的工作过程差不多跟halt一样,不过它是引发主机重启,而halt是关机。它 的参数与halt相差不多。
4、init是所有进程的祖先,它的进程号始终为1, init 0为关机,init 1为重启。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)