本人在使用Linux时突然卡死,检索解决方法及相关知识后总结进行记录。
解决方法
1. 尝试进入tty
若Linux在桌面中卡死,可以尝试按下快捷键组合 ctrl+alt+F3
进入tty3 (类似的可以按下快捷键组合 ctrl+alt+F4
进入 tty4
,可扩展到tty6),在tty中先通过 top
命令获取高cpu占用进程,再通过 pkill
加 进程名,或者 kill -9
加 进程名 的方式关闭或杀死死锁进程。最后按下快捷键组合 ctrl+alt+F1
或者 ctrl+alt+F2
返回桌面,因桌面系统不同此处快捷键并不相同。
2. 若上述步骤无效,使用SysRq键(即Prt Scr键)
使用此方法可以实现Linux系统的安全重启,但是若使用此方法操作不当可能会造成系统当前部分数据丢失。
首先检查SysRq是否开启,在命令行中输入cat /proc/sys/kernel/sysrq
,若输出为0,则还未开启,若大于1则部分功能可用。可以通过 sudo sysctl -w kernel.sysrq=1
命令开启SysRq,由于以上操作只在本次开机运行时有效,为保证下次开机SysRq服务自动启用,需编辑 /etc/sysctl.conf
,添加内容kernel.sysrq=1
同时按下ctrl键和alt键,在执行完下述步骤之前不要松开。
先按下SysRq键,再依次按下R键1秒, E键30秒, I键10秒, S键5秒, U键5秒, B键。做完此步骤后系统就会重启。注意,不要快速地按下这六个键。快速地按下这些键可能会造成系统当前部分数据丢失。
相关内容
上述内容可以解决此问题,此部分内容为扩展内容。
tty
tty是电传打字机的缩写,其出现于19世纪30年代。电传打字机和普通打字机(typewriter)的区别在于,电传打字机连接到通信设备,直接发送输入的消息。在Linux中,tty通过TTY驱动程序在内核级别实现进程管理、行编辑和会话管理。每当在系统中启动一个终端仿真器(桌面系统中的终端软件)或使用任何类型的shell时,它都会与虚拟tty(也被称为伪TTY(pseudo-TTY),即PTY)进行交互。
tty、终端仿真器和shell:tty直接与内核进行交互,而终端仿真器与虚拟tty进行交互。shell是命令行解释器,执行用户输入的命令并返回结果。tty或终端仿真器从用户这里接收输入,由Shell解析后交给操作系统内核去执行,之后把执行结果返回给tty或者终端仿真器。最后由tty或者终端仿真器把Shell返回的结果展示给用户。
SysRq
大多数键盘的SysRq和PrtSc键是复用的。SysRq 经常被称为 Magic System Request,它被定义为一系列按键组合。当系统因为某种原因已经停止对大部分正常服务的响应,但是系统仍然可以响应键盘的按键中断请求。通过它,不但可以在保证磁盘数据安全的情况下重启,还可以排除和诊断系统故障。在检查当前SysRq值时,可能会遇到一些特殊的值,如176。176=128+32+16,故其代表着目前启用了128、32、16代号对应的功能。各个代号对应的功能如下所示:
在按下SysRq后,常见的按键组合有:
1.
R-E-I-S-U-B,该组合基本等价于reboot命令,会依次停止系统上运行的进程,回写磁盘缓冲区,再安全的重启系统。由于依次停止系统上运行的进程,回写磁盘缓冲区这一过程需要一定的时间,所以按完一个键后要等待一段时间后再按下一个键。
2.
M-P-T-W,该组合可以查看当前系统的内存使用情况,当前CPU寄存器的状态,进程运行状态,以及所有CPU及寄存器的状态。通过这些信息,可以对挂起的原因做粗略的分析,进行针对性处理。即使不能找到原因并成功恢复,也将会为以后的故障分析留下宝贵的证据。
按下SysRq后,各个键的功能如下:
K、F,它们可能会解决系统假死,恢复系统挂起。有时候系统的死机仅仅是因为个别进程过分消耗cpu或内存等系统资源所引发的。使用K可以结束与当前控制台相关的全部进程,使用F可以利用OOM-Killer选取一个进程然后结束之。这对于内存被耗尽引起的挂起可以起更加准确的作用,但是如果是非内存问题引起的挂起,F可能会误杀,引起一些不必要的麻烦。
E和I都会结束除init以外的所有进程,理论上可以恢复系统挂起。但是所有的服务都已中止,需手工干预才能恢复正常。推荐继续完成S-U-B操作进行安全重启,这样可以保证启动所有服务而不发生遗漏。
本文仅作为学习笔记,记录学习中遇到的问题及解决方法。由于本人水平有限,有些内容理解可能并不到位,若发现错误请在评论区留言,以便及时更正,不胜感激。
参考文章
1. Ubuntu桌面卡死解决办法 风与沙的较量丶
2. Linux 黑话解释:TTY 是什么? | Linux 中国 Linux 中国
3. 什么是 Linux 上的 TTY? (以及如何使用 tty 命令) 炎黄子孙,龙的传人
4. 命令行界面、终端、Shell、TTY,傻傻分不清楚? 企鹅号-SegmentFault
5. linux 中的
SysRq 魔术键 RQsir
6. SysRq使用详解 渊蓝之蓝
7. linux 下的 SysRq 键 文江博客
8. Linux内核基础篇——神奇的系统请求键SysRq Vincent
9. 利用 SysRq 键排除和诊断系统故障 1658775
10. linux 强制重启
sysrq,在Linux上,如何启用所有SysRq功能 如何科学养鱼
11. Documentation for
/proc/sys/kernel/ kernel.org
12. Linux Magic System Request Key Hacks kernel.org
标签:tty,记录,系统,仿真器,SysRq,Linux,进程,卡死 From: https://www.cnblogs.com/Yunxiaoyvji/p/17825742.html