En mi escritorio gnome GUI de Ubuntu 12.04, Ctrl+ Alt+ Deletecerrará sesión en lugar de reiniciar.
Pero me dijeron que
Cambiar a una consola virtual basada en texto y presionar Ctrl+Alt+Suprimir reiniciará la máquina. Se apagará limpiamente y se reiniciará, lo cual es mucho mejor que Alt+SysRq+REISUB.
Entonces me pregunto si los dos significados diferentes anteriores de Ctrl+ Alt+ Deleteson correctos.
¿ A qué comandos Ctrl++ está vinculado en estos dos casos?AltDelete
Respuesta1
Ctrl+ Alt+ Deletees en realidad una pulsación de tecla "mágica" para la arquitectura de hardware compatible con PC de IBM que llamaría un restablecimiento del BIOS.
Dado que este tipo de cosas son peligrosas para un sistema como Linux, se tomó la decisión de enganchar esas pulsaciones de teclas y hacer otra cosa en su lugar. Esto está controlado por init
y puedes ver lo que hace mirando en /etc/inittab
.
En mi sistema Debian Squeeze:
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
Más tarde , Windows NT hizo lo mismo y convirtió Ctrl++ al modo de entrada de clave segura*.AltDelete
En el caso de X, es similar a enganchar las pulsaciones de teclas, pero simplemente kill
es el servidor de pantalla (que reaparecerá automáticamente si estás usando un administrador de pantalla).
En algunos sistemas (quizás en todos, hace tiempo que no los pruebo) aún puedes presionar Ctrl+ Alt+ Deleteantes de que se cargue el sistema operativo para activar un reinicio del BIOS.
*No estoy seguro de cómo lo llaman realmente.
Respuesta2
El kernel de Linux puede reiniciarse por completo o enviar a SIGINT el proceso de inicio con Ctrl + Alt + Supr.
El propio kernel de Linux permite dos posibles comportamientos con Ctrl-Alt-Supr:
- reiniciar inmediatamente
- enviar SIGINT al proceso de inicio
El comportamiento que se utiliza se puede seleccionar con:
reboot
llamada al sistema, verman 2 reboot
/proc/sys/kernel/ctrl-alt-del
Por lo tanto, si el comportamiento SIGINT está habilitado, entonces el resultado de Ctrl + Alt + Supr depende completamente del controlador SIGINT que tenga su init.
Por ejemplo, el init 1.28.3 de BusyBox ejecuta un comando arbitrario dado /etc/inittab
como:
::ctrlaltdel:/sbin/reboot
Y aquí hay un ejemplo de C mínimamente interesante para uclibc:
#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;
}
Aquí estáuna configuración fácil para probar esto.
Respuesta3
Las distribuciones de Linux contemporáneas utilizan systemd
en lugar de SysV init. El comportamiento del combo ctrl-alt-delete es manejado por ctrl-alt-del.target, que está vinculado de forma predeterminada a reboot.target, pero se puede configurar en cualquier otro.
Lista de objetivos disponibles:
systemctl list-unit-files -t target
Presionar el combo más de 7 veces en 2 segundos (como presionar y mantener presionado) forzaría el reinicio inmediato de forma predeterminada (o la acción especificada por CtrlAltDelBurstAction
).
También es útil kbrequest.target
, pero no está habilitado de forma predeterminada.