Linux中SysRq的使用

2021-08-19 01:41:40 字數 1416 閱讀 2813

sysrq 鍵可以直接從核心輸出資訊。只要不是禁

止中斷狀態,即使宕機時也可以獲取資訊。sysrq 鍵在確認核心執行、調查核心宕機原

因等各種情況下都非常有效。

drivers/tty/sysrq.c

static int __init sysrq_init(void)

module_init(sysrq_init);

sysrq proc的支援:

static void sysrq_init_procfs(void)

static const struct file_operations proc_sysrq_trigger_operations = ;

static ssize_t write_sysrq_trigger(struct file *file, const char __user *buf,

size_t count, loff_t *ppos)

return count; }

void __handle_sysrq(int key, bool check_mask)

else

}  ... }

struct sysrq_key_op *__sysrq_get_key_op(int key)

static struct sysrq_key_op *sysrq_key_table[36] =

sysrq按鍵的支援:

首先需要開啟開關

開啟這個功能,執行:

# echo 1 > /proc/sys/kernel/sysrq

關閉這個功能:

# echo 0 > /proc/sys/kernel/sysrq

#ifdef config_magic_sysrq

, #endif

int sysrq_toggle_support(int enable_mask)

return 0;

} 由實現可以看出支援動態開啟和關閉

註冊sysrq按鍵處理函式:

static inline void sysrq_register_handler(void)

static struct input_handler sysrq_handler = ;

static bool sysrq_filter(struct input_handle *handle,

unsigned int type, unsigned int code, int value)

break;

} ....

} 可以看出sysrq按鍵最終和proc一樣都是呼叫__handle_sysrq()來處理

檢視記憶體資訊:

# echo 'm' > /proc/sysrq-trigger

重啟:# echo 'b' > /proc/sysrq-trigger

使用 SysRq 檢視系統資訊

qidi 2017.08.31 markdown haroopad 前言 因為看到有同事使用了 sysrq 的技巧進行 debug,雖然我目前還沒有使用過,但為了便於以後使用也為了備忘,所以在這裡簡要記錄一下。更詳細的說明可以閱讀文末所列參考文章。1 sysrq 是什麼 在某些鍵盤上我們可以看到sy...

Linux核心除錯方法總結之sysrq

sysrq 用途 sysrq被稱為 魔術組合鍵 是內置於linux核心的除錯工具。只要核心沒有完全鎖住,不管核心在做什麼事情,使用這些組合鍵都可以蒐集包括系統記憶體使用 cpu任務處理 程序執行狀態等系統執行資訊。原理 核心幫助文件kernel documentation sysrq.txt 首先,...

linux中list的使用

注 最近在研究系統原始碼,發現有些時候,要自己寫才能知道自己是否真的已完全理解。也可藉此加深記憶,鍛鍊自己的表達,所以會經常在部落格中亂寫,如果有錯,千萬表拍磚 linux核心實現中,涉及到很多的佇列,比如執行佇列runqueue,其中儲存了所有的處於就緒狀態等待執行的程序的task struct結...