SysRq使用詳解


曾經啊,對着鍵盤上 Print Screen/SysRq 的鍵琢磨許久,也不知道所謂 SysRq 到底是做什么用的。自從用了 linux,才算知道是給內核傳遞信息,緊急情況下重啟系統用的。

因為在 windows 的時候,從來沒有用到過這個按鍵,所以我也就一直忽略掉了它的存在。直到有一天一個 flash 視頻全屏后,x 崩潰,不要說進 tty 殺 gnome,就是按下 numberlock 都要反應好一會熄滅…… 幸好我有 SysRq 這個終極武器 :) ,順利重啟系統,避免了當前數據的丟失。

當您遇到死機或者沒有響應的時候,甚至連 tty 都進不去,可以嘗試用 SysRq 重啟計算機。

警告:SysRq 不是萬金油,不能解決任何疑難雜症。它只是您的最后武器,不到萬不得已不可使用!因為一旦使用,系統將重啟,當前工作的數據可能丟失!

使用 SysRq 重啟計算機的方法:

Alt + SysRq + [R-E-I-S-U-B] 
——台式機鍵盤或者全尺寸鍵盤

Fn + Alt + SysRq + [R-E-I-S-U-B]
——部分筆記本鍵盤

解釋:括號內的英文字母需要依次順序按下,而且每次按下字母后需要間隔 5-10s 再執行下一個動作。(如 alter +SysRq + R,間隔10s 后再按 alter+ SysRq +E,以此類推)切記不可快速按下 R-E-I-S-U-B ,否則后果和 扣電池拔電源線無異!

字母順序的記憶方法很簡單,busy — busier — (reverse) — reisub — R-E-I-S-U-B (想來也是 linus 那斯傑作吧,lol)

下面詳細講解一下各個序列:

unRaw – 把鍵盤設置為 ASCII 模式,使按鍵可以穿透 x server 捕捉傳遞給內核

tErminate – 向除 init 外進程發送 SIGTERM 信號,讓其自行結束

kIll - 向除 init 以外所有進程發送 SIGKILL 信號,強制結束進程

Sync – 同步緩沖區數據到硬盤,避免數據丟失

Unmount – 將所有已經掛載的文件系統 重新掛載為只讀

reBoot - 立即重啟計算機

可以從順序中看出,它不僅僅是殺掉進程這么簡單,而且還有同步數據等操作,所以在每個操作結束前進行下一個操作是非常危險的。所以,R-E-I-S-U-B 這個序列的推薦使用方式是:R – 1 秒 – E – 30 秒 – I – 10 秒 – S – 5 秒 – U – 5 秒 – B,而不是一氣呵成地按下這六個鍵,試想一次正常的 reboot 命令也不是在一瞬間完成的吧。


順便翻一下其他按鍵的作用:

0-9 設定終端輸出的內核 log 優先級
b 立即重啟系統
c 內核live reboot,並輸出錯誤信息
d 顯示所有排它鎖
e 向除 init 外進程發送 SIGTERM 信號,讓其自行結束
f 人為觸發 OOM Killer (out of memory)
g 當進入內核模式時,以 framebuttter 代替輸出
h 輸出幫助
i 向除 init 以外所有進程發送 SIGKILL 信號,強制結束進程
k 結束與當前控制台相關的全部進程
m 內存使用信息
n 重置所有進程的 nice(優先級)
o 關機
p 輸出cpu 寄存器信息
q Display all active high-resolution timers and clock sources.
r 把鍵盤設置為 ASCII 模式,使按鍵可以穿透 x server 捕捉傳遞給內核
s 同步緩沖區數據到硬盤
t 輸出進程列表
u 重新掛載所有文件系統為只讀模式
v 輸出 Voyager SMP 處理信息
w 輸出 block(d狀態)進程列表
組合使用效果更好~

我的嘗試:

某次按照順序執行 r-e-i-s-u-b 時候,忽然想到,既然 i 已經殺死了所有進程,那么僵死進程也必定被 kill 了,只要不是內核掛掉,應該都是可以恢復的。然后嘗試進入tty1,成功。遂輸入命令欲啟動 gnome,成功。但是在 gnome 登陸界面,鼠標鍵盤均無法使用……

后來想明白了,應該是把 hal,udev 什么的都 kill 掉了,所以 x-server 無法接受輸入設備信息,當然無法使用鍵鼠了……我的嘗試也到此為止,希望有人能驗證是不是因為 hal ,udev 被 kill而導致 gnome 輸入無響應。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM