用Magic SysRq鍵實(shí)現(xiàn)Linux安全重啟
Magic SysRq是Linux內(nèi)核中一個(gè)組合鍵(key combination),它允許用戶可以忽略系統(tǒng)的狀態(tài)而執(zhí)行一些低級(jí)指令。
它常被用來從系統(tǒng)凍結(jié)狀態(tài)中恢復(fù)過來或者重啟電腦而不會(huì)破壞文件系統(tǒng)。組合鍵由 Alt+SysRq 再加上一個(gè)相應(yīng)的鍵 組成。在大多數(shù)系統(tǒng)中 SysRq 鍵就是 Print Screen 鍵.
首先,你需要像下面那樣使 SysRq 鍵生效。
echo "1" > /proc/sys/kernel/sysrq
SysRq 對(duì)應(yīng)的組合鍵列表
以下是對(duì) Alt+SysRq+commandkey 有效的 Commandkeys.
o ‘k’- 殺死所有在當(dāng)前虛擬控制臺(tái)(virtual console)運(yùn)行的進(jìn)程 。
o ‘s’- 嘗試同步所有掛載的文件系統(tǒng)。
o ‘b’- 不卸載分區(qū)也不做同步的情況下立即重啟系統(tǒng)
o ‘e’- 向除了init 外的所有進(jìn)程發(fā)送 SIGTERM 信號(hào)。
o ‘m’- 將當(dāng)前的內(nèi)存信息輸出到控制臺(tái)。
o ‘i’- 向除了init 外的所有進(jìn)程發(fā)送 SIGKILL 信號(hào)。
o ‘r’- 把鍵盤從raw模式(一種被像X11這樣的程序調(diào)用的模式)轉(zhuǎn)換為 XLATE模式。
o ‘s’– 使所有掛載的文件系統(tǒng)同步。
o ‘t’– 將當(dāng)前任務(wù)的清單以及它們的信息輸出到控制臺(tái)。
o ‘u’– 以只讀方式重新掛載所有已掛載的文件系統(tǒng)。
o ‘o’– 立刻關(guān)閉系統(tǒng)。
o ‘p’– 將當(dāng)前的寄存器和標(biāo)志信息輸出到控制臺(tái)。
o ‘0-9′- 設(shè)置控制臺(tái)的日志級(jí)別,從而控制輸出到控制臺(tái)的內(nèi)核信息。
o ‘f’– 將會(huì)調(diào)用 oom_kill 來殺死占用較多內(nèi)存的進(jìn)程。
o ‘h’– 用來顯示幫助說明。但是除了上述列出的鍵外其他鍵也可以打印出幫助說明。#p#
我們也可以將該鍵 寫入 /proc/sysrq-trigger 文件中。例如, 要重啟系統(tǒng)你可以運(yùn)行下面的命令:
echo "b" > /proc/sysrq-trigger
用Magic SysRq鍵實(shí)現(xiàn) Linux 的安全重啟
如果要實(shí)現(xiàn)掛起狀態(tài)中的Linux的安全重啟,請(qǐng)按如下操作。這將可避免在下一次重啟時(shí)進(jìn)行文件系統(tǒng)檢查和修復(fù)(fsck)。也就是,按住Alt+SysRq,再按住如下加粗的字母。
o unRaw (從X11獲取鍵盤的控制權(quán)),
o tErminate (向所有進(jìn)程發(fā)出SIGTERM信號(hào),使他們可以正常結(jié)束),
o Kill (向所有進(jìn)程發(fā)出SIGKILL信號(hào),強(qiáng)制這些進(jìn)程立刻結(jié)束),
o Sync (將數(shù)據(jù)同步到磁盤),
o Unmount (卸載所有只讀的文件系統(tǒng)),
o reBoot (重啟系統(tǒng))