Answers:
GNU / Linux下[至少基于该那些SystemV的init风格 ],行为ctrl+ alt+ del依赖的配置文件/etc/inittab
,你应该能够读取一行:
<id>::ctrlaltdel:/sbin/shutdown -t3 -r now
(例如来自ArchLinux发行版的示例),这意味着系统在收到组合键时将关闭。但是您可能想要做其他事情,例如*:
<id>::ctrlaltdel:/usb/bin/sudo make me a sandwich
(这更有用:)
那么你可以创建快捷键Alt+ Ctrl+ Del在Linux中,但有一些其他更有趣的组合,你可能想知道。
按住Alt和键SysRq(这是Print Screen键),然后REISUB在每个键之间键入几秒钟(我通常数为5),这将使您安全地重新启动。REISUO将关闭而不是重新启动。正如评论所指出的,这不是单个命令,而是许多命令的组合,每个命令都执行特定的操作。因此,我建议您看一下REISUB-温和的Linux重新启动以获取更多详细信息。
您可能已经知道这一点,但是可以随时按Alt+ Ctrl+的任何键从F1到F6获取控制台,您可以使用该控制台以文本模式登录并使用命令行。当我弄乱桌面环境时,这非常有用。
reisub
真正的作用。这不是一个命令,而是六个命令的组合,每个命令都执行特定的操作(有关详细信息,请查看Wikipedia上有关Magic SysRq键的文章)。因此,如果i
过e
一会儿再打一下,您就可以在程序仍然关闭时将其杀死-就像我在阅读此答案后所做的那样。
是的,但是所采取的措施取决于桌面管理器配置。在KDE中,它显示一个对话框,您可以选择重新启动还是暂停系统。
Linux内核既可以硬重启或发送SIGINT init进程在Ctrl+ Alt+Del
因此,如果SIGINT行为被启用,那么你可以让Ctrl+ Alt+ Del做任何你想要初始化它做。
Linux内核本身允许两种可能的行为,从Ctrl+ Alt+ Del:
可以选择使用哪种行为:
reboot
系统调用,请参阅 man 2 reboot
/proc/sys/kernel/ctrl-alt-del
例如,BusyBox的1.28.3 init执行以下任意命令/etc/inittab
:
::ctrlaltdel:/sbin/reboot
这是uclibc的一个最小的有趣C示例:
#define _XOPEN_SOURCE 700
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/reboot.h>
#include <unistd.h>
void signal_handler(int sig) {
write(STDOUT_FILENO, "cad\n", 4);
signal(sig, signal_handler);
}
int main(void) {
int i = 0;
/* Disable the forced reboot, enable sending SIGINT to init. */
reboot(RB_DISABLE_CAD);
signal(SIGINT, signal_handler);
while (1) {
sleep(1);
printf("%d\n", i);
i++;
}
return EXIT_SUCCESS;
}