Magic SysRq 组合键是一串能直接与 Linux 内核沟通的组合键,允许使用者就算在系统进入死循环濒临崩溃时,直接呼叫系统底层将数据写入档案系统或重新开机,避免尚未写入档案系统与硬盘的数据在开机后消失。在 Linux 系统中,推荐尽量使用 Magic SysRq 组合键而不是直接硬关机。
常见 Linux 发行版比如 Debian 系发行版,都默认开启了 Magic SysRq 组合键。但在 Arch 系发行版上则默认关闭。
【注】Magic SysRq 只有在 Linux 内核正常工作时才有效,当 Linux 内核停止工作时发送 Magic SysRq 是无效的,比如 Kernel Panic。
如果只是需要在当前系统会话有效,下次开机后便无效,则可以运行以下代码:
sysctl kernel.sysrq = 1
如果要使之永久生效,在 Arch Linux 上,则可以将以下代码写入 /etc/sysctl.d/99-sysctl.conf
文件中,若没有该文件则创建一个:
kernel.sysrq = 1
然后重载系统所有配置或者仅重载 /etc/sysctl.d/99-sysctl.conf
配置文件:
sudo sysctl --system
sudo sysctl --load=/etc/sysctl.d/99-sysctl.conf
重启系统的 Magic SysRq 组合键为:REISUB,简单记忆为「Reboot Even If System Utterly Broken」。
键盘快捷键 | 描述 |
---|---|
Alt+SysRq+R —— Unraw | 从 X 收回对键盘的控制 |
Alt+SysRq+E —— Terminate | 向所有进程发送 SIGTERM 信号,让它们正常终止 |
Alt+SysRq+I —— Kill | 向所有进程发送 SIGKILL 信号,强制立即终止 |
Alt+SysRq+S —— Sync | 将待写数据写入磁盘 |
Alt+SysRq+U —— Unmount | 卸载所有硬盘然后重新按只读模式挂载 |
Alt+SysRq+B —— Reboot | 重启 |
当系统中有内核高耗的进程导致系统卡顿时,可以使用 Alt+SysRq+f
Magic SysRq 组合键唤醒 Linux Kernel 的 OOM(out of memory) Killer 杀死这些进程。使用这个组合键可以减少因内存高耗导致重启系统的次数,OMM Killer 使用启发算法选取当前系统内存占用最高且不重要的进程进行杀死,所以当系统内存占用不高的情况下还是需要慎用。