使用reboot命令失敗的處理方法(/proc/sys/kernel/sysrq 和 /proc/sysrq-trigger )

轉載:http://blog.sina.com.cn/s/blog_76017061010193wj.html

           http://www.itnpc.com/news/web/145592768142693.html


重啓服務器:
        # echo 1 > /proc/sys/kernel/sysrq  
        # echo b > /proc/sysrq-trigger  


1. /proc/sys/kernel/sysrq
向sysrq文件中寫入1是爲了開啓SysRq功能。根據linux/Documentations/sysrq.txt中所說:SysRq代表的是Magic System Request Key。開啓了這個功能以後,只要內核沒有掛掉,它就會響應你要求的任何操作。但是這需要內核支持(CONFIG_MAGIC_SYSRQ選項)。向/proc/sys/kernel/sysrq中寫入0是關閉sysrq功能,寫入1是開啓,其他選項請參考sysrq.txt。需要注意的是,/proc/sys/kernel/sysrq中的值隻影響鍵盤的操作。
那麼怎麼使用SysRq鍵呢?
在x86平臺上,組合鍵"<ALT> + SysRq + <command key>"組成SysRq鍵以完成各種功能。但是,在一些鍵盤上可能沒有SysRq鍵。SysRq鍵實際上就是"Print Screen"鍵。並且可能有些鍵盤不支持同時按三個按鍵,所以你可以按住"ALT鍵",按一下"SysRq鍵",再按一下"<command key>鍵",如果你運氣好的話,這個會有效果的。不過放心,現在的鍵盤一般都支持同時按3個或3個以上的鍵。
<command key>有很多,這裏只挑幾個來說,其他的可以參考sysrq.txt文件。
· 'b' —— 將會立即重啓系統,並且不會管你有沒有數據沒有寫回磁盤,也不卸載磁盤,而是完完全全的立即關機
· 'o' —— 將會關機
· 's' —— 將會同步所有以掛在的文件系統
· 'u' —— 將會重新將所有的文件系統掛在爲只讀屬性

2. /proc/sysrq-trigger
從文件名字就可以看出來這兩個是有關係的。寫入/proc/sysrq-trigger中的字符其實就是sysrq.txt中說的鍵所對應的字符,其功能也和上述一樣。
所以,這兩行命令先開啓SysRq功能,然後用'b'命令讓計算機立刻重啓。

/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
此外還有兩個,類似於強制註銷的功能
e — Kills all processes except init using SIGTERM
i — Kills all processes except init using SIGKILL



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章