Welche Bedeutung haben die Tastenkombination Strg+Alt+Entf und welcher Befehl wird in Linux ausgeführt?

Welche Bedeutung haben die Tastenkombination Strg+Alt+Entf und welcher Befehl wird in Linux ausgeführt?

Auf meinem Gnome-GUI-Desktop von Ubuntu 12.04 erfolgt eine Abmeldung Ctrlper + Alt+ statt eines Neustarts.Delete

Aber mir wurde gesagt, dass

Wenn Sie zu einer textbasierten virtuellen Konsole wechseln und Strg+Alt+Entf drücken, wird der Computer neu gestartet. Er wird sauber heruntergefahren und neu gestartet, was viel besser ist als Alt+SysRq+REISUB.

Daher frage ich mich, ob die beiden oben genannten unterschiedlichen Bedeutungen von Ctrl+ Alt+ Deleterichtig sind?

An welche Befehle wird Ctrl+ Alt+ Deletein diesen beiden Fällen gebunden?

Antwort1

Ctrl+ Alt+ Deleteist eigentlich ein „magischer“ Tastendruck für die IBM PC-kompatible Hardwarearchitektur, der einen BIOS-Reset auslöst.

Da so etwas für ein System wie Linux gefährlich ist, wurde entschieden, diese Tastenanschläge abzufangen und stattdessen etwas anderes zu tun. Dies wird gesteuert von initund Sie können sehen, was es tut, indem Sie in nachsehen /etc/inittab.

Auf meinem Debian Squeeze-System:

ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

Windows NT zog später nach und machte aus Ctrl+ Alt+ Deleteden sicheren Tasteneingabemodus*.

Im Falle von X werden die Tastenanschläge auf ähnliche Weise abgefangen, es handelt sich dabei jedoch lediglich killum den Anzeigeserver (der automatisch neu gestartet wird, wenn Sie einen Anzeigemanager verwenden).

Bei einigen Systemen (vielleicht allen, ich habe es schon lange nicht mehr probiert) können Sie immer noch Ctrl+ Alt+ drücken Delete, bevor das Betriebssystem geladen wird, um einen BIOS-Reset auszulösen.


*Ich bin nicht sicher, wie es eigentlich heißt.

Antwort2

Der Linux-Kernel kann entweder einen Hard-Reboot durchführen oder dem Init-Prozess bei Strg + Alt + Entf SIGINT senden.

Der Linux-Kernel selbst ermöglicht zwei mögliche Verhaltensweisen von Strg-Alt-Entf:

  • sofort neu starten
  • sende SIGINT an den Init-Prozess

Welches Verhalten verwendet wird, kann folgendermaßen ausgewählt werden:

  • rebootSystemaufruf, sieheman 2 reboot
  • /proc/sys/kernel/ctrl-alt-del

Wenn das SIGINT-Verhalten aktiviert ist, hängt das Ergebnis von Strg + Alt + Entf daher vollständig vom SIGINT-Handler Ihres Initialisierungsvorgangs ab.

Beispielsweise führt BusyBox' 1.28.3 init einen beliebigen Befehl aus, der /etc/inittabwie folgt angegeben ist:

::ctrlaltdel:/sbin/reboot

Und hier ist ein minimales interessantes C-Beispiel für 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;
}

Hier isteine einfache Einrichtung zum Ausprobieren.

Antwort3

Moderne Linux-Distributionen verwenden systemdstattdessen SysV-Init. Das Verhalten der Kombination Strg-Alt-Entf wird von Strg-Alt-Entf.target gesteuert, das standardmäßig mit reboot.target verknüpft ist, aber auch auf jeden anderen Wert eingestellt werden kann.

Liste der verfügbaren Ziele:

systemctl list-unit-files -t target

Ziel wechseln

Wenn Sie die Kombination innerhalb von 2 Sekunden mehr als 7 Mal drücken (z. B. drücken und gedrückt halten), wird standardmäßig ein sofortiger Neustart erzwungen (oder die durch angegebene Aktion CtrlAltDelBurstAction).

Es gibt auch nützliche kbrequest.target, aber diese sind standardmäßig nicht aktiviert.

verwandte Informationen