解决Linux Ubuntu 突然出现死机无法进入系统的问题(sysrq magic key)
如果遇到linux(此处已Uuntu20.04为例)死机,担心直接断电重启会丢失数据或者损伤磁盘。可尝试下面两种方法
1.如果在图形界面 进入不了系统。可以按ctrl+alt+F2(F1-F6一般都可以)切换到文字界面,这样会切换到另外一个虚拟终端,需要一个账号来登入,进入后用top命令查看进程表,等待进程信息表刷新一两次,就可以确定占用资源比较大的进程了,然后输入q退出,回到终端内,把占用资源比较大的进程kill掉,这样可以解决相当一部分问题。最后按ctrl+alt+F7回到图形界面。
2.使用 r e i s u b组合键方法
ubuntu20.04默认开启sysreq magic kye( /proc/sys/kernel/sysrq 或者/etc/sysctl.d/10-magic-sysrq.conf 内的参数都为176)
若是低版本为开启:
运行如下命令:
echo 1 > sudo tee /proc/sys/kernel/sysrq
或者:
sudo gedit /etc/sysctl.d/10-magic-sysrq.conf 修改kernel.sysrq为1
键盘上一般都有一个键SysRq, 和PrintScreen(截屏)在一个键位上,这就是系统请求的键。
这个方法可以在死机的情况下安全地重启计算机, 数据不会丢失。
-
r : unRaw 将键盘控制从 X Server 那里抢回来
-
e : tErminate 给所有进程发送 SIGTERM 信号,让它们自己解决善后
-
i : kIll 给所有进程发送 SIGKILL 信号,强制他们马上关闭
-
s : Sync 将所有数据同步至磁盘
-
u : Unmount 将所有分区挂载为只读模式
-
b : reBoot 重启
使用方法就是一次按住ctrl + alt + sysrq.等待一秒后。松开sysrq, 然后每次间隔几秒左右按下 r e i s u b.你会发现每按一次,屏幕上信息都会有所变化。最后按下B时,屏幕显示reset,这时你的左手可以松开了,等几秒钟,计算机就会安全重启。
重启后可以查看/var/log/syslog
补充:
/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
此外还有两个,类似于强制注销的功能
— Kills all processes except
einit
using SIGTERM
— Kills all processes except
iinit
using SIGKILL
参考:https://www.cnblogs.com/playboysnow/p/4872415.html