本文包含以下內容:(可能並不為人所知的)默認快捷鍵方面的信息、有用的關於用戶自定義快捷鍵的信息。
默認快捷鍵
內核(SysRq)
以下是系統底層的快捷鍵,通常被用於調試。遇到系統問題,請儘可能嘗試這些快捷鍵,而不是按住電源開關強制關機。
詳情參見 Magic SysRq key - Wikipedia。
啟用
systemd 有一個默認設置為 0x10 的 SysRq 權限掩碼。這使得 SysRq 並不能允許進程做發出信號、重啟等事項。為使用 SysRq
的完整功能,在 sysctl#配置 sysctl中加入 kernel.sysrq = 1
。高於 1 的值用於選擇性地開啟 SysRq 功能,詳見 Linux 內核文檔。如果你想確保其在分區掛在前開啟,在內核參數中加入 sysrq_always_enabled=1
。
注意,改變上述設置將使這些快捷鍵在重啟後保持開啟。如果你只想在當前會話開啟 SysRq,你可以執行 sysctl kernel.sysrq=1
或 echo "1" > /proc/sys/kernel/sysrq
。
完全啟用 SysRqQ 有明顯的安全風險。除了強制重啟,它還可以被用來丟棄 CPU 寄存器的內容,理論上來說可以洩露敏感信息。由於使用它需要物理訪問系統(除非您通過 sysrqd 對外開放),大多數桌面用戶可能認為風險水平是可以接受的。儘管如此,在開啟 SysRq 之前,你仍需要確保充分理解開啟它的風險。
重啟
記住這個激活命令的通用口訣是 "Reboot Even If System Utterly Broken" (或者"REISUB")。 要是記不住,想像 "BUSIER" 吧。
鍵盤快捷鍵 | 描述 |
---|---|
Alt +SysRq +r Unraw
|
從X收回對鍵盤的控制 |
Alt +SysRq +e Terminate
|
向所有進程發送SIGTERM信號,讓它們正常終止 |
Alt +SysRq +i Kill
|
向所有進程發送SIGKILL信號,強制立即終止 |
Alt +SysRq +s Sync
|
將待寫數據寫入磁碟 |
Alt +SysRq +u Unmount
|
卸載所有硬碟然後重新按只讀模式掛載 |
Alt +SysRq +b Reboot
|
重啟 |
殺死內存占用過多的進程
Alt+SysRq+f
可用於喚醒 OOM(內存耗盡) 殺手。即使在沒有可以殺死的進程下,這也不會造成內核恐慌。這個 OOM 殺手作出一系列嘗試,來殺死相對不重要的進程並收回內存。當某個進程用太多內存,比如瀏覽器腳本運行失控,導致系統軟鎖的時候,這很有用,能緩解很多需要重啟的情況。請注意,OOM 殺手能殺掉各種進程。儘管其本意是好的,但還是不可預測。因此,要小心使用,不要隨意喚醒它。
遠程使用
sysrqdAUR 是一個遠程使用 SysRq
的守護進程。它看起來沒人維護了。[1]
疑難解惑
- SysQq 將其結果輸出到內核緩存環,會被 systemd 日誌收集。即使 Linux 控制台沒有輸出任何東西,結果仍然在內核緩存環中。沒有控制台輸出並不意味著它沒執行成功。如果碰上了這種情況,運行
journalctl -kf
來監控其到達內核緩存環的輸出。 - 如果你在使用顯示管理器,並且在按下
Alt+SysRq+e
後顯示了登錄界面(開啟了自動登錄的話,還可能是完全的桌面),這很有可能是由於與服務文件有關的Restart=always
指令導致的。有必要的話,你可能需要編輯單元文件,但這應該不影響 "REISUB" 序列工作。 - 如果以上快捷鍵除了
Alt+SysRq+b
都成功了,嘗試使用對測的Alt
鍵。 - 對於一些用
Fn
鍵從PrtScrn
鍵中區別出SysRq
鍵的筆記本,可能並不需要同時按下Fn
鍵(例如:Alt+PrtScrn+字母
可能可以工作)。 - 對於 Legion 系列以外的聯想筆記本,經常將
Fn+S
設置為SysRq
鍵。為了使用這個快捷鍵的功能,先持續按下Alt
鍵,然後按Fn+S
,鬆開Fn
與s
,始終保持Alt
鍵,按先前提到的順序繼續按。 - 你可能需要和
Alt
一同按下Ctrl
。如果這樣,完整的快捷鍵示例就像Ctrl+Alt+SysRq+b
。
終端
Xorg 與 Wayland
快捷鍵 | 解釋 | 注意 |
---|---|---|
Ctrl+Alt+F1 , F2 , F3 , ...
|
切換到第 n 個虛擬控制台。 | 不能用的話,嘗試 Ctrl+Alt+Fn+F… 。
|
Shift+Insert 滑鼠按鍵 2
|
從主緩衝區粘貼文本 | 默認情況下,Qt 將 Shift+Insert 映射到剪貼版而非主緩衝區(見[2]),而 Ctrl+Shift+Insert 才映射到主緩衝區。
|
自定義快捷鍵
Readline
Readline 是行編輯領域常用的庫,用例見 Bash、FTP,以及很多的其他軟體(詳見 readline包 包頁面下「被依賴」節)。它提供 Emacs 與 vi 風格的編緝模式,因而有很多可以自定義的空序列。默認快捷鍵在 readline 手冊頁(3)和文檔頁列出。
Zsh
Xorg
Xorg/Keyboard configuration#Frequently used XKB options 記載了一些常見的快捷鍵,但它們默認關閉。
在桌面環境下,我們可以通過幾種辦法來實現一個按鍵序列被按下的時候自動執行一個指令(例如:將一個指令綁定到 keysym):
- 最可移植的辦法是使用低級工具,例如 acpid。不是所有的鍵位都受到支持,但是它也可能通用於鍵盤案件、電源鍵甚至耳機接口的插拔事件。但,仍然要注意:它可能很難在 X 會話上正確地運行程序。
- 最普遍的方法是使用 Xorg 工具(如 xbindkeys)和桌面環境(窗口管理器)的工具。
- 快速的辦法是用第三方程序,把所有的東西都放到 GUI,例如 Gnome 控制中心。
sxhkd
簡單的 X 熱鍵守護進程,提供了又小又強的配置語法。詳見 sxhkd。
actkbd
根據 actkbd 的主頁:
- actkbdAUR 是一個簡單的將事件綁定到鍵盤事件上的守護進程。它可以識別組合鍵、連擊、按下與釋放按鍵的事件。它只支持 linux-2.6 edev 介面。它使用富文本的配置檔案來記錄所有的綁定.
配置示例和指南可以訪問這個連結。
xbindkeys
xbindkeys 支持獨立於桌面環境的鍵-事件映射。
xbindkeys
很難用,有一個圖形化的管理器 xbindkeys_config-gtk2AUR 可用。桌面環境
窗口管理器
X-selection-paste 的鍵位映射
更喜歡使用鍵盤工作的用戶可能希望用快捷鍵來替代用中鍵粘貼,特別是在鍵盤中心的環境中使用的時候。一個工作流示例如下:
- 在使用火狐的時候,用滑鼠選擇一個你想在網上搜索的字符串。
- 按下
Ctrl+k
進入「搜尋引擎」區。 - 按
F9
來粘貼緩衝區中的內容,代替用滑鼠移到搜尋引擎區再按中鍵。
Shift+Insert
的功能很相似,但是略有不同,見#Xorg:Shift+Insert
在 QT 環境下從剪貼版緩衝區而非 x-selection-paste 緩衝區粘貼。在一些程序中,此二者互相映射。如上示例使用以下三樣包:
這個示例將 x-selection 粘貼操作綁定到 F9
鍵:
.xbindkeysrc
"xvkbd -no-jump-pointer -xsendevent -text "\D1`xsel`" 2>/dev/null" F9
"\D1"
碼前置 100 毫秒延遲來插入到選定的緩衝區(詳見 xvkbd 主頁)。
--xsendevent
參數。除了 F9
以外的鍵也可以用 xbindkeys -k
綁定。
引用: