
首先确認目前使用的 linux 核心支援 sysrq:
<code># grep "config_magic_sysrq" /boot/config-`uname -r`</code>
<code>config_magic_sysrq=y</code>
如果系統預設關閉了 kernel.sysrq 的話,需要打開。為了保證每次系統重新開機核心參數都生效,建議把配置寫到 sysctl.conf 檔案裡:
<code># sysctl kernel.sysrq</code>
<code>kernel.sysrq = 0</code>
<code></code>
<code># sysctl -w kernel.sysrq=1</code>
<code>kernel.sysrq = 1</code>
<code># vi /etc/sysctl.conf</code>
<code>...</code>
<code># controls the system request debugging functionality of the kernel</code>
sysrq 配置好後就可以開始用了。sysrq 安全重新開機的推薦按鍵組合是 alt + sysrq + r-e-i-s-u-b,先按下 alt 鍵和 sysrq 鍵,然後依次按下 r e i s u b 鍵(不區分大小寫)。這個 r e i s u b 序列組合的意思是:
r – 把鍵盤設定為 ascii 模式 e – 向除 init 外所有程序發送 sigterm 信号 i – 向除 init 外所有程序發送 sigkill 信号 s – 磁盤緩沖區同步 u – 重新挂載為隻讀模式 b – 重新開機系統
需要注意的是這些按鍵之間有順序,而且按鍵之間有時間間隔(因為要等待前一個操作的完成),推薦的時間間隔是:
<code>r</code> – 1 秒 – <code>e</code> – 30 秒 – <code>i</code> – 10 秒 – <code>s</code> – 5 秒 – <code>u</code> – 5 秒 – <code>b</code>。
即使是 magic sysrq 對不 non-interruptible 的 system hang 也沒辦法。不過 sysrq 在關鍵時刻能幫上大忙,避免資料不一緻和丢失,甚至檔案系統損壞。 一般是這麼記的 => busier 順序倒過來,意味着接下去會越來越忙?
我們通常隻在意資料是否安全的同步到了磁盤,是以我們一般隻用 s-b 組合,按下 alt + sysrq + s 後等待 emergency sync complete 提示,同步完成确認後用 alt + sysrq + b 立刻重新開機。
原文釋出時間為:2013-10-04
本文來自雲栖社群合作夥伴“linux中國”