¿Cuál es el significado y el comando ejecutado con Ctrl+Alt+Supr en Linux?

¿Cuál es el significado y el comando ejecutado con Ctrl+Alt+Supr en Linux?

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 inity 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 killes 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:

  • rebootllamada 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/inittabcomo:

::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 systemden 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

Cambiando de objetivo

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.

información relacionada