IT运维笔记


使用reboot命令失败的处理方法

重启服务器: echo 1 > /proc/sys/kernel/sysrq echo b > /proc/sysrq-trigger 1. /proc/sys/kernel/sysrq 向sysrq文件中写入1是为了开启SysRq功能。根据linux/Documentations/sysrq.txt中所说:SysRq代表的是Magic System Request Key。开启了这个功能以后,只要内核没有挂掉,它就会响应你要求的任何操作。但是这需要内核支持(CONFIG_MAGIC_SYSRQ选项)。向/proc/sys/kernel/sysrq中写入0是关闭sysrq功能,写入1是开启,其他选项请参考sysrq.txt。需要注意的是,/proc/sys/kernel/sysrq中的值只影响键盘的操作。 那么怎么使用SysRq键呢? 在x86平台上,组合键" + SysRq + "组成SysRq键以完成各种功能。但是,在一些键盘上可能没有SysRq键。SysRq键实际上就是"Print Screen"键。并且可能有些键盘不支持同时按三个按键,所以你可以按住"ALT键",按一下"SysRq键",再按一下"键",如果你运气好的话,这个会有效果的。不过放心,现在的键盘一般都支持同时按3个或3个以上的键。 有很多,这里只挑几个来说,其他的可以参考sysrq.txt文件。 · 'b' —— 将会立即重启系统,并且不会管你有没有数据没有写回磁盘,也不卸载磁盘,而是完完全全的立即关机 · 'o' —— 将会关机 · 's' —— 将会同步所有以挂在的文件系统 · 'u' —— 将会重新将所有的文件系统挂在为只读属性 2. /proc/sysrq-trigger 从文件名字就可以看出来这两个是有关系的。写入/proc/sysrq-trigger中的字符其实就是sysrq.txt中说的键所对应的字符,其功能也和上述一样。 所以,这两行命令先开启SysRq功能,然后用'b'命令让计算机立刻重启。 /proc/sysrq-trigger该文件能做些什么事情呢? # 立即重新启动计算机 (Reboots the kernel without first unmounting file systems or syncing disks attached to the system) echo "b" > /proc/sysrq-trigger # 立即关闭计算机(shuts off the system) echo "o" > /proc/sysrq-trigger # 导出内存分配的信息 (可以用/var/log/message 查看)(Outputs memory statistics to the console) echo "m" > /proc/sysrq-trigger # 导出当前CPU寄存器信息和标志位的信息(Outputs all flags and registers to the console) echo "p" > /proc/sysrq-trigger # 导出线程状态信息 (Outputs a list of processes to the console) echo "t" > /proc/sysrq-trigger # 故意让系统崩溃 ( Crashes the system without first unmounting file systems or syncing disks attached to the system) echo "c" > /proc/sysrq-trigger # 立即重新挂载所有的文件系统 (Attempts to sync disks attached to the system) echo "s" > /proc/sysrq-trigger # 立即重新挂载所有的文件系统为只读 (Attempts to unmount and remount all file systems as read-only) echo "u" > /proc/sysrq-trigger 此外还有两个,类似于强制注销的功能 e — Kills all processes except init using SIGTERM i — Kills all processes except init using SIGKILL