如何在Linux上设置紧急断电键盘快捷键?

如何在Linux上设置紧急断电键盘快捷键?

有时,当我的笔记本电脑从待机或休眠状态唤醒时,屏幕背光不会打开,我在黑暗的房间里几乎看不到任何东西,而当我在户外时也看不到任何东西。

唯一的解决方案是关闭计算机电源,取出电池,然后将其放回去并重新打开。即使只是将其关闭然后再次打开(正常的完全冷重置,但没有通过取出电池完全断电)也无济于事 – 屏幕背光仍然会关闭,甚至 BIOS 启动顺序和 GRUB 菜单也会显示黑暗的屏幕。这表明问题可能不是驱动程序问题。

至于现在,我通过按住电源按钮 5 秒钟以冷方式将其关闭,但是,不用说,定期这样做并不是一件好事。

我想设置一个键盘快捷键,无论如何都会触发无条件但软的关闭序列(通知所有应用程序并给予时间优雅退出并正确卸载所有文件系统)关闭序列。

如何才能做到这一点?

我使用 Xubuntu 15.10,但我相信这是在较低的、与发行版无关的级别上完成的,所以我决定在这里提问而不是在 AskUbuntu 上提问。

更新:我有一个解决方案的想法 - 远没有我想要的那么方便,但仍然是一个选项 - 禁用 GRUB 默认选择超时,然后在需要时按Ctrl+ Alt+F1切换到控制台,按Ctrl+ Alt+Delete重新启动,然后在给计算机一些时间重新启动到 GRUB 后关闭计算机电源。我只是希望有一个像Ctrl+ Alt+Delete这样的快捷方式可以关闭计算机而不是重新启动它。

答案1

魔法 SysRq 键适用于这样的情况。

[Magic SysRq 键] 是一个“神奇”的组合键,您可以点击它,无论内核在做什么,内核都会响应它,除非它完全锁定。

请注意,必须将支持编译到内核中才能使其工作。这是一个稍微好一点的解决方案,因为即使所有 TTY 都挂起,只要内核仍然响应,它也可以工作。

在我的笔记本电脑上,您可以通过输入Right Alt+ PrtScr+来触发它Magic key

您想要的魔术键可能是 REISUO,依次按下它们,每次按下之间等待几秒钟。

'r' - 关闭键盘原始模式并将其设置为 XLATE。
'e' - 向除 init 之外的所有进程发送 SIGTERM。
'i' - 向除 init 之外的所有进程发送 SIGKILL。
's' - 将尝试同步所有已安装的文件系统。
'u' - 将尝试以只读方式重新挂载所有已挂载的文件系统。
'o' - 将关闭您的系统(如果已配置并支持)。


我个人认为Ctrl++产生AltDel关闭更加优雅。除了当前的解决方案之外,一旦确定您处于 GRUB 提示符处,请按c并输入halt,然后Enter按 正常关闭电源。

或者,向 GRUB 添加一个运行的自定义条目halt,然后只需按几次向下箭头并按 Enter 键即可。


您提到您已经不正常地关闭了几次电源,您可能想要在下次启动时强制检查文件系统

答案2

Ctrl按+ Alt+时的行为Delete是可配置的。当你按下这个组合键时,内核会向进程 1 (init) 发送一个 SIGINT 信号,因此由 init 来决定。

对于 systemd,SIGINT 会启动该ctrl-alt-del.target单元。默认情况下/lib/systemd/system/ctrl-alt-del.target是到 的符号链接reboot.target。创建一个链接/etc/systemd/system/ctrl-alt-del.target到的符号链接/lib/systemd/system/shutdown.target(不要修改下面的链接,/lib因为它会在升级时被覆盖)。看https://askubuntu.com/questions/659267/how-do-i-override-or-configure-systemd-services有关在 Ubuntu 上配置 systemd 目标的更详细过程。

相关内容