LINUX遠程強制重啟/proc/sys/kernel/sysrq /proc/sysrq-trigger----觸發器
https://www.cnblogs.com/yanghong-hnu/p/5880417.html (
數據結構(/include/linux/leds.h))
1. # echo 1 > /proc/sys/kernel/sysrq
2. # 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
Linux下/proc目錄的作用
1. /proc目錄
Linux 內核提供了一種通過 /proc 文件系統,在運行時訪問內核內部數據結構、改變內核設置的機制。proc文件系統是一個偽文件系統,它只存在內存當中,而不占用外存空間。它以文件系統的方式為訪問系統內核數據的操作提供接口。
用戶和應用程序可以通過proc得到系統的信息,並可以改變內核的某些參數。由於系統的信息,如進程,是動態改變的,所以用戶或應用程序讀取proc文件時,proc文件系統是動態從系統內核讀出所需信息並提交的。下面列出的這些文件或子文件夾,並不是都是在你的系統中存在,這取決於你的內核配置和裝載的模塊。另外,在/proc下還有三個很重要的目錄:net,scsi和sys。 Sys目錄是可寫的,可以通過它來訪問或修改內核的參數,而net和scsi則依賴於內核配置。例如,如果系統不支持scsi,則scsi目錄不存在。
除了以上介紹的這些,還有的是一些以數字命名的目錄,他們是進程目錄。系統中當前運行的每一個進程都有對應的一個目錄在/proc下,以進程的PID號為目錄名,他們是讀取進程信息的接口。而self目錄則是讀取進程本身的信息接口,是一個link。
2.子文件或子文件夾
/proc/buddyinfo 每個內存區中的每個order有多塊可用,和內存碎片問題有關
/proc/cmdline 啟動時傳遞給kernel的參數信息
/proc/cpuinfo cpu的信息
/proc/crypto 內核使用的所有已安裝的加密密碼及細節
/proc/devices 已經加載的設備並分類
/proc/dma 已注冊使用的ISA DMA 頻道列表
/proc/execdomains Linux 內核當前支持的execution domains
/proc/fb 幀緩沖設備列表,包括數量和控制它的驅動
/proc/filesystems 內核當前支持的文件系統類型
/proc/interrupts x86 架構中的每個IRQ中斷數
/proc/iomem 每個物理設備當前在系統內存中的映射
/proc/ioports 一個設備的輸入輸出所使用的注冊端口范圍
/proc/kcore代表系統的物理內存,存儲為核心文件格式,里邊顯示的是字節數,等於RAM大小加上4kb
/proc/mdstat 多硬盤,RAID配置信息(md=multiple disks)
/proc/loadavg 根據過去一段時間內CPU和IO的抓鬼呢太得出的負載狀態,與uptime命令有關
/proc/meminfo RAM使用的相關信息
/proc/misc 其他的主要設備(設備號為10)上注冊的驅動
/proc/modules 所有加載到內核的模塊列表
/proc/mounts 系統中使用的所有掛載
/proc/partitions 分區中的塊分配信息
/proc/stat 所有的cpu活動信息
/proc/uptime 系統已經運行了多久
/proc/swaps 交換空間的使用情況
/proc/fs 文件系統信息
/proc/ide ide設備信息
/proc/net 網卡設備信息
/proc/vmsat 虛擬內存統計信息
/proc/vmcore 內核panic時的內存映像
/proc/diskstats 取得磁盤信息
/proc/scsi scsi設備信息
以下是/proc目錄中進程信息
/proc/N pid為N的進程信息
/proc/N/cmdline 進程啟動命令
/proc/N/cwd 鏈接到進程當前工作目錄
/proc/N/exe 鏈接到進程的執行命令文件
/proc/N/fd 包含進程相關的所有的文件描述符
/proc/N/maps 與進程相關的內存映射信息
/proc/N/mem 指代進程持有的內存,不可讀
/proc/N/stat 進程的狀態
/proc/N/status 進程狀態信息,比stat/statm更具可讀性
/proc/self 鏈接到當前正在運行的進程