如果硬盘可能会出现锁死或坏道的故障,会造成 SHELL 命令的失效,包括 reboot,powoff,,shutdown,用正常的命令是没法完成重启的。
执行这些命令,会出现如下 IO 报错:
1
2
3
4
|
# reboot
bash: /sbin/reboot: Input/output error
# shurdown -r now
bash: /sbin/shutdown: Input/output error
|
很明显,因为硬盘的故障,内核无法从磁盘上读取二进制程序 /sbin/reboot 和 /sbin/shutdown 来执行,所以命令失败。下次启动时系统自动 fsck 可能会更正磁盘错误,但首先需要使系统重启,拉掉电源这个办法可能会造成硬盘的伤害。
可以让内核直接重启,不需要读取(已经锁死或坏掉的)硬盘,如下:
1、执行:
1
|
echo 1 > /proc/sys/kernel/sysrq
|
"magic SysRq key"提供了一个通过/proc 来直接给内核发送命令的方法。要启用该特性,只需在内核编译的时候启用"CONFIG_MAGIC_SYSRQ"这个选项,而一般发行版的标准内核都已经启用了。
所以,只需执行第一步命令激活这个选项。
2、再执行如下命令
1
|
echo b > /proc/sysrq-trigger
|
设备将会立即重启。