从系统死锁中恢复

摘要

一旦陷入了“死锁”,您的计算机将无法再响应任何命令,像键盘或鼠标这样的输入设备也会被阻塞。这是最糟糕的一种情况,它可能意味着您的配置、软件或硬件发生了非常严重的错误。我们将会为您细细解说如何处理这种烦人的状况。

出现系统死锁后,您最应该做的一件事,就是试着正常关闭系统。我们假定您正位于 X 下。现在,请依次执行以下步骤:

  1. 试着杀死 X 服务器,请按Ctrl-Alt-Backspace键。

  2. 试着切换到另外一个控制台,请按Ctrl-Alt-Fn 键(这里 n 代表控制台序号,可以从 1 到 6)。如果您成功的话,请以 root 登录,并执行下面的命令:kill -15 $(pidof X)。如果此命令无效的话,请执行命令kill -9 $(pidof X)。(请用 top 检查 X 是否仍在运行中)。

  3. 如果您是局域网的一部分,可以试着从局域网的另外一台计算机中通过 ssh 连接到您的计算机。建议您以非特权用户的身份 ssh 到远程计算机,然后使用 su 命令成为 root

  4. 如果系统对以上操作都不响应了,您就需要进入 SysRq (系统请求)序列。要激活 SysRq 序列,您需要同时按下三个键:左 Alt 键、SysRq 键(与 PrintScreen 在一个键上)和一个字母键。

    1. Alt-SysRq-R 将键盘置于“原始”模式。现在再按 Alt-Ctrl-Backspace 就应该可以杀死 X 了。如果不行的话,请继续阅读。

    2. Alt-SysRq-S 尝试将所有未保存的数据写入磁盘(“同步”到磁盘)。

    3. Alt-SysRq-E 向除 init 以外的全部进程发送终止信号。

    4. Alt-SysRq-I 向除 init 以外的全部进程发送杀死信号。

    5. Alt-SysRq-U 试图以只读方式重新挂载已挂载的全部文件系统。这将删除“脏标记”并且将避免重新启动时的文件系统检查。

    6. Alt-SysRq-B 重新启动系统。您也可以按下您计算机机箱上的“reset”按钮。

    [Note]注意

    请记住,这是一个顺序过程。也就是说,您应该以正确顺序依次按下按键组合:Raw、Sync、tErm、kIll、Umount、reBoot[19]。请阅读内核的文档中关于此特性的更多信息。

  5. 如果以上操作都无法生效的话,您就只能按下计算机机箱上的“reset”开关了。如果您幸运的话,GNU/Linux 只会在重新启动的时候运行磁盘检查。

不管用什么方法,您应该找出是什么原因导致死锁的,因为这样将损坏文件系统。您还可能考虑使用 Mandrakelinux中包含的日志文件系统:ext3reiserfs 等等,因为这些文件系统能够更加有效的处理这样的意外事件。但是,将 ext2FS 替换为 reiserfs 需要重新格式化您的分区。您可以使用 tune2fs -J /dev/hdaN 将第一个 IDE 硬盘的第 N 个分区从 ext2FS 转换为 ext3FS



[19] 助记短语:“Raising Skinny Elephants Is Utterly Boring