1. 简介

Magic SysRq 组合键是一串能直接与 Linux 内核沟通的组合键,允许使用者就算在系统进入死循环濒临崩溃时,直接呼叫系统底层将数据写入档案系统或重新开机,避免尚未写入档案系统与硬盘的数据在开机后消失。在 Linux 系统中,推荐尽量使用 Magic SysRq 组合键而不是直接硬关机。

常见 Linux 发行版比如 Debian 系发行版,都默认开启了 Magic SysRq 组合键。但在 Arch 系发行版上则默认关闭。

【注】Magic SysRq 只有在 Linux 内核正常工作时才有效,当 Linux 内核停止工作时发送 Magic SysRq 是无效的,比如 Kernel Panic。

2. 开启

2.1 临时开启

如果只是需要在当前系统会话有效,下次开机后便无效,则可以运行以下代码:

1
sysctl kernel.sysrq = 1

2.2 永久开启

如果要使之永久生效,在 Arch Linux 上,则可以将以下代码写入 /etc/sysctl.d/99-sysctl.conf 文件中,若没有该文件则创建一个:

1
kernel.sysrq = 1

然后重载系统所有配置或者仅重载 /etc/sysctl.d/99-sysctl.conf 配置文件:

1
2
sudo sysctl --system
sudo sysctl --load=/etc/sysctl.d/99-sysctl.conf

3. Magic SysRq 组合键

3.1 重启系统

重启系统的 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 重启

3.2 杀死内存高耗进程

当系统中有内核高耗的进程导致系统卡顿时,可以使用 Alt+SysRq+f Magic SysRq 组合键唤醒 Linux Kernel 的 OOM(out of memory) Killer 杀死这些进程。使用这个组合键可以减少因内存高耗导致重启系统的次数,OMM Killer 使用启发算法选取当前系统内存占用最高且不重要的进程进行杀死,所以当系统内存占用不高的情况下还是需要慎用。

附录

参考资料及更多细节参见: