linux提示内核死机不同步

linux提示内核死机不同步,第1张

linux提示内核死机不同步,我们不要慌,linux不像Windows,可以利用强大的文字界面 *** 作,按Ctrl-Alt-F1,就会切换到TTY文字界面。再就需要用户名密码登入。需要注意的是键盘输入的速度可能会比较慢。下面在提示符后面输入top回车,这时会看到一张动态的表,上面列出了耗用资源最多的进程。观察它刷新一两次,按q退出,然后输入kill ,其中的 PID 你可以在 top 里面看到。这个时候应该会快了不少,如果你发现没有成功结束掉,就再输入 kill -KILL ,这次基本上就没问题了。

除了上面 这种情况外,一些底层软件的 bug 也可能导致一些奇怪的死机问题。以前有个用户就因为莫名其妙的死机强制重启把 ext4 的分区给伤了。最后是sysreccd修复了,貌似是分区表部分损坏,死机时键鼠均无反应。一般来说,系统负载高导致的死机,最可怕键盘的就是键鼠都没反应了。

这时我们可以利用reisub,这个方法可以在各种情况下安全地重启计算机。在键盘上找到一个叫做“Sys Rq”的键,在台机的键盘上通常与 Prt Sc 共键,在笔记本可能在其他位置,如 Delete以台机为例,要使用这种方法需要按住 Alt-Print(Sys Rq),然后依次按下 reisub 这几个键,按完b系统就会重启。

其实Sys Rq是一种叫做系统请求的东西,按住 Alt-Print 的时候就相当于按住了 Sys Rq 键,这个时候输入的一切都会直接由 Linux 内核来处理,它可以进行许多低级 *** 作。

这个时候reisub中的每一个字母都是一个独立 *** 作,他们分别表示:unRaw 将键盘控制从 X Server 那里抢回tErminate 给所有进程发送 SIGTERM 信号,让他们自己解决善后kIll 给所有进程发送 SIGKILL 信号,强制他们马上关闭Sync 将所有数据同步至磁盘Unmount将所有分区挂载为只读模式reBoot重启。

如果问题能够再现,那么问题已经解决 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 上看看,或换个核心试试)

系统设置

解决办法:

你提到的shutdown命令死机的问题,很多版本都有这个现象。Linux是企业级的系统,本身设置得非常严谨,简直一丝不苟,所以你必须要非常清楚明白地写清楚命令,才会得到你想要的结果。这里,我先更新解决办法:shutdown -h now 可以达到你要的关机效果。

进一步的详细解释:

shutdown命令可以安全地将系统关机。 有些用户会使用直接断掉电源的方式来关闭linux,

这是十分危险的。因为linux与windows不同,其后台运行着许多进程,所以强制关机可能

会导致进程的数据丢失,使系统处于不稳定的状态,甚至在有的系统中会损坏硬件设备。

而在系统关机前使用shutdown命令,系统管理员会通知所有登录的用户系统将要关闭。

并且login指令会被冻结,即新的用户不能再登录。直接关机或者延迟一定的时间才关机

都是可能的,还可能重启。这是由所有进程〔process〕都会收到系统所送达的信号〔signal〕

决定的。这让像vi之类的程序有时间储存目前正在编辑的文档,而像处理邮件〔mail〕和

新闻〔news〕的程序则可以正常地离开等等。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7386930.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存