快捷键
本文包含以下内容:(可能并不为人所知的)默认快捷键方面的信息、有用的关于用户自定义快捷键的信息。
默认快捷键[编辑 | 编辑源代码]
内核(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
绑定。
引用: