Magic SysRequest key
Magic SysRq Key (kurz für „Magische S-Abf-Taste“, engl. Magic SysRequest key) bezeichnet eine Reihe von Tastenkombinationen mit der {{#if:trim|S-Abf}}-Taste für den Linux-Kernel.
Beschreibung
- Damit lassen sich verschiedene Funktionen – beispielsweise ein Neustart des Computers – ausführen
- Dabei können die Funktionen nacheinander in sinnvoller Reihenfolge ausgeführt werden.
- Das funktioniert auch noch, wenn der Computer auf andere Eingaben nicht mehr reagiert, sofern der Kernel noch nicht abgestürzt ist.
- Häufig nutzt man diesen „Klammergriff“ für einen Neustart, ohne Schäden am Dateisystem zu verursachen, oder um einen nicht mehr reagierenden X-Server zu beenden.
- Obwohl Linux sehr stabil ist, können in Ausnahmefällen Kernel Panics auftreten.
- Manchmal stoppt auch nur der XServer, der für die grafische Oberfläche verantwortlich ist.
- Dann ist unter Umständen nicht mal der Wechsel in eine Konsole zur Reparatur möglich.
In einem solchen Moment kann natürlich der Reset-Taster gedrückt oder der Rechner "hart" ausgeschaltet werden – mit dem immer vorhandenen Risiko von Datenverlusten.
- Notwendig ist dies aber nicht, da es Möglichkeiten gibt, das System entweder sauber herunterzufahren oder weitere Maßnahmen zu ergreifen, um die Ursache des Problems zu finden.
- Dazu gibt es eine Funktion des Kernels, die sich "SysRequest key" nennt, auch als Magische S-Abf-Taste bekannt.
Die SysRq-Taste befindet sich auf der deutschen Tastatur als Zweitbelegung von Druck.
- Je nach Tastatur muss man zum Erreichen von "S-Abf" zuerst Alt gedrückt halten:
Alt + Druck (auf schweizerischen und englischsprachigen Tastaturen jedoch Alt Gr + die Taste "SysRq").
- Bei Notebooks ist teilweise auch die Kombination mit Fn erforderlich.
Hinweis
- Dell Vostro Laptops: Erst ⇩ num drücken – dann leuchtet das blaue LED auf – und danach Fn + Alt + Druck +"Buchstabe" drücken.
- einige Logitech-Tastaturen (zum Beispiel K300): Erst Fn (Taste in rot) drücken, dann leuchten oben die LED's in kräftiger, oranger Farbe auf und danach Alt + Druck (die Druck-Taste ist die Pos1 -Taste) +"Buchstabe" drücken.
- Workarounds, wie ⇩ num zuerst zu aktivieren oder Alt Gr anstelle von Alt zu verwenden, sind offenbar bei vielen Laptops nötig.
- Ebenso kann es bei Notebooks vorkommen, dass die Tastenkombination auf der integrierten, nicht jedoch auf einer extern angeschlossenen Tastatur funktioniert.
- Manchmal funktionieren nur Teile der Magic SysRQ-Kette nicht, etwa der letzte (B) für den Reboot.
- In diesem Fall kann der Rechner durch kurzes Drücken des An-/Ausschalters neu gestartet werden.
Der gewünschte Befehl wird erteilt, indem auf der Tastatur dann noch zusätzlich der entsprechenden Buchstaben gedrückt wird.
Syntax
Parameter
Optionen
Konfiguration
Aktivieren und Deaktivieren
Status prüfen
$ cat /proc/sys/kernel/sysrq 438
- Ist die Ausgabe ungleich 0, ist SysRQ aktiv, bei 0 nicht.
- Zur Deutung des zurückgelieferten Werts siehe sysrq.txt.
Aktivierung
# echo 1 | sudo tee /proc/sys/kernel/sysrq
Deaktivierung
# echo 0 | sudo tee /proc/sys/kernel/sysrq
Permanentes Aktivieren und Deaktivieren
/etc/sysctl.d/10-magic-sysrq.conf
# Werte fuer X sind der Dokumentation zu entnehmen: http://www.mjmwired.net/kernel/Documentation/sysrq.txt #kernel.sysrq = X # # Deaktivierung kernel.sysrq = 0
Dateien
Anwendungen
Verfügbare Kombinationen
Der gewünschte Befehl wird erteilt, indem man gleichzeitig auf der Tastatur {{#if:trim|S-Abf}} + {{#if:trim|Alt}} drückt. {{#if:trim|S-Abf}} ist auf IBM-AT-kompatiblen Tastaturen eine Alternativbelegung der Taste {{#if:trim|Druck}}.
Auf Tastaturen für Deutschland drückt man gleichzeitig die Tasten {{#if:trim|Alt}} + {{#if:trim|Druck}} + {{#if:trim|Taste aus Tabelle unten}}.
Auf Tastaturen für die Schweiz und englischsprachige Länder entspricht die Taste {{#if:trim|SysRq}} dem deutschen Pendant {{#if:trim|S-Abf}}. Die Beschriftung ist zum Beispiel in der Schweiz {{#if:trim|PrtScr SysRq}}. Die Kombination auf schweizerischer Tastatur ist: {{#if:trim|Alt Gr}} + {{#if:trim|PrtScr SysRq}}.
Besonders auf Laptops müssen wegen herstellerspezifischen Tastaturlayouts ggf. noch Zusatztasten gedrückt werden, so etwa auf Dell-Laptops zunächst {{#if:trim|Num}}, anschließend {{#if:trim|Fn}} + {{#if:trim|Alt}} + {{#if:trim|Druck}} + {{#if:trim|entsprechender Buchstabe}}; auf z. B. ThinkPads kann folgende Abfolge verwendet werden: {{#if:trim|Alt}} drücken und halten, {{#if:trim|Fn}} + {{#if:trim|Druck}} drücken und wieder loslassen, {{#if:trim|entsprechenden Buchstaben}} drücken, alle loslassen.
Die für den entsprechenden Befehl notwendige Taste kann in der folgenden Tabelle abgelesen werden, Groß- und Kleinschreibung spielt keine Rolle. Die Angaben beziehen sich auf die in Deutschland übliche QWERTZ-Tastatur.
Taste | Funktion (englisch) | Bedeutung |
---|---|---|
{{#if:trim|0}}…{{#if:trim|9}} | set log level | 0}} werden nur noch kritische Meldungen wie etwa Kernel panic angezeigt. |
{{#if:trim|B}} | reboot | Fahre den Rechner sofort herunter, ohne Daten aus dem Kernel-Festplatten-Cache auf die Festplatten zu schreiben und ohne Partitionen auszuhängen, und starte den Rechner neu. |
{{#if:trim|C}} | crashdump | Starte mit Hilfe von kexec[3] neu (sofern vorhanden) und gib einen Crashdump auf dem Bildschirm aus. Ansonsten provoziere einen Absturz durch eine Null-Pointer-Dereferenzierung.[4] |
{{#if:trim|D}} | Zeige (im Textmodus) alle derzeitigen Locks an. | |
{{#if:trim|E}} | term | Sende SIGTERM an alle Prozesse außer Init |
{{#if:trim|F}} | force a OOM kill | Startet den OOM-Killer, der den speicherlastigsten Prozess tötet. Damit kann man meistens am System weiterarbeiten, wenn ein Prozess anfängt stark auszulagern und das System dadurch sehr träge reagiert. |
{{#if:trim|G}} | kGDB | Schaltet bei neueren Kernelversionen auf die Framebuffer-Textkonsole um und startet den Kernel-Debugger kgdb, falls vorhanden. |
{{#if:trim|H}} | help | Gib einen Hilfetext für die Benutzung des Magic-SysRq-Key aus. Auch jede andere nicht belegte Taste gibt diesen Text aus. |
{{#if:trim|I}} | kill | Sende SIGKILL an alle Prozesse außer Init |
{{#if:trim|J}} | "Just thaw it" | Beendet bei neueren Kernelversionen das „Einfrieren“ eines Dateisystems durch die IOCTL-Funktion FIFREEZE. |
{{#if:trim|K}} | secure attention key | Beende alle Prozesse auf dem aktuellen Terminal, um sicher zu sein, dass der Login-Prompt von Init stammt und nicht von einem Trojaner. Eine aufgehängte Anwendung, welche die SVGAlib benutzt, oder ein nicht mehr reagierender X-Server lassen sich auch auf diese Weise beenden. So wird etwa in Ubuntu ab Version 9.04 dies statt der bisher genutzten Kombination {{#if:trim|Strg}} + {{#if:trim|Alt}} + {{#if:trim|Backspace}} empfohlen.[5] |
{{#if:trim|L}} | kill including init | Sende SIGKILL an alle Prozesse, auch an Init. Das kommt einem Ausschalten gleich. Neuere Kernelversionen zeigen einen Backtrace an. |
{{#if:trim|M}} | memory | Gib die Hauptspeicherbelegung in der Konsole aus. |
{{#if:trim|N}} | Hiermit lässt sich die Priorität von Echtzeit-Prozessen herabsetzen. | |
{{#if:trim|O}} | poweroff | Schaltet den Rechner mit sofortiger Wirkung über ACPI/APM – wenn unterstützt – aus. Wie bei {{#if:trim|B}} wird mit {{#if:trim|O}} alleine nichts gespeichert. |
{{#if:trim|P}} | show registers | Zeige den Inhalt der CPU-Register inklusive der Flags an. |
{{#if:trim|Q}} | Zeige alle derzeitig laufenden Timer an. | |
{{#if:trim|R}} | unraw | Verlasse den Keyboard-Raw-Modus, der unter X und SVGAlib aktiv ist, in den Keyboard-XLATE-Modus, der im Textmodus von Linux verwendet werden kann. Dies kann nützlich sein, wenn eine grafische Anwendung abstürzt und der Benutzer sich in der Konsole wiederfindet, die aufgrund des falschen Tastatur-Modus zunächst jedoch nicht benutzbar ist. |
{{#if:trim|S}} | sync | Schreibe alle noch nicht auf die Festplatte geschriebenen Daten aus dem Kernel-Festplatten-Cache auf die Festplatten |
{{#if:trim|T}} | show tasks | Zeige eine Liste aktuell laufender Prozesse an. |
{{#if:trim|U}} | umount | Alle schreibbar eingebundenen Partitionen werden ausgehängt und anschließend nur-lesend wieder eingehängt. |
{{#if:trim|V}} | framebuffer, ETM dump | Schaltet bei neueren Kernelversionen auf die Framebuffer-Textkonsole um. Auf der ARM-Architektur wird der ETM-Puffer angezeigt. |
{{#if:trim|W}} | Zeige blockierte Prozesse an, die sich, beispielsweise während Festplattenzugriffen, im „ununterbrechbaren Schlaf“ befinden. | |
{{#if:trim|X}} | XMON | Bei neueren Kernelversionen für die XMON-Schnittstelle der Power/PowerPC-Architektur verwendet. |
{{#if:trim|Y}} | FTRACE dump | Bei neueren Kernelversionen wird der FTRACE-Puffer angezeigt. |
{{#if:trim|Z}} | show global CPU registers | Bei neueren Kernelversionen werden auf der SPARC-64-Architektur die globalen CPU-Register angezeigt. |
Die meisten Tastenkombinationen werden oft in einer bestimmten Reihenfolge ausgeführt, um eine bestimmte Aktion auszuführen.
- Für solche Sequenzen haben sich mittlerweile verschiedene Merksätze gebildet.
- Die häufigste Sequenz wird vermutlich ein Notfall-Neustart sein; hierfür wird die ganze Zeit Alt + Druck gedrückt gehalten und nacheinander die Tasten R + E + I + S + U + B betätigt.
- Die dazu benötigte Reihenfolge lässt sich mit folgendem Satz merken:
- "Reboot Even If System Utterly Broken" oder
- "Richtig Einparken Ist So Unglaublich Banal"
- rückwärts: "busier", (vom engl. "busy", das heißt, beschäftigt oder ausgelastet)
Jeweils der erste Buchstabe eines Wortes steht für die folgende SysRQ-Funktion:
Hinweis
- Seit Ubuntu 12.10 sind die ersten drei SysRQ-Funktionen standardmäßig deaktiviert.
- Damit steht praktisch nur "SUB" zur Verfügung (194676, 1025467).
- Möchte man diese aus Sicherheitsgründen getroffene Einschränkung aufheben, setzt man statt 176 den Wert 1 (siehe unten).
Sicheres Reboot | |||
Taste | Funktion | Bedeutung | |
R | unraw | Nimmt der grafischen Oberfläche den Zugriff auf die Tastatur | |
E | term | Sendet ein SIGTERM an alle Prozesse außer Init | |
I | kill | Sendet ein SIGKILL an alle Prozesse außer Init | |
S | sync | Schreibt alle noch nicht auf die Festplatte geschriebenen Daten aus dem Kernel-Festplatten-Cache auf die Festplatten | |
U | umount | Alle eingehängten Partitionen werden ausgehängt, und danach nur-lesbar eingehängt | |
B | reboot | Fährt den Rechner sofort herunter, ohne Daten aus dem Kernel-Festplatten-Cache auf die Festplatten zu schreiben und ohne Partitionen auszuhängen, und startet den Rechner neu. |
Weitere Funktionen
Sonstige Funktionen | |||
Taste | Funktion | Bedeutung | |
C | Crashdump | Startet über kexec(sofern vorhanden) neu und gibt einen Dump auf dem Bildschirm aus.
|
|
D | Zeigt im Textmodus alle gesetzten Locks an | ||
K | secure attention key | Beendet alle Prozesse auf dem aktuellen Terminal, um sicher zu sein, dass der Login-Prompt von Init stammt und nicht von einem Trojaner.
|
|
L | Kill including init | Sende SIGKILL an alle Prozesse, auch an Init.
|
|
M | Memory | Gibt im Textmodus die Hauptspeicherbelegung in der Konsole aus. | |
O | Power off | Fährt den Rechner mit APM/ACPI herunter und schalte ihn aus (wenn vom Rechner unterstützt). | |
P | Zeigt im Textmodus den Inhalt der CPU-Register inklusive der FLAGS an | ||
Q | Zeigt im Textmodus alle derzeitig laufenden Timer an | ||
T | Zeigt im Textmodus eine Liste aktuell laufender Prozesse an. | ||
W | Zeigt im Textmodus die Prozesse in geblocktem Status an. | ||
F | force a OOM kill | Killt den "teuersten" Prozess für den Speicher. |
Kommandozeile
Wenn die Druck -Taste nicht zur Verfügung steht, das Terminal aber schon, können die SysRQ-Kommandos auch über eine Kommandozeile ausgeführt werden.
- Mit Hilfe der Standard-Datenströme wird der Code der gewünschten Taste in den SysRQ-Trigger des procfs geschrieben.
# echo b | tee /proc/sysrq-trigger
Dieser Befehl ist äquivalent zur Kombination Alt + Druck + B und startet den Rechner sofort neu.
Magic SysRQ testen
Wer die SysRQ-Funktionen gezielt testen möchte, startet am besten eine Forkbomb auf dem Rechner, um diesen bewusst zu überlasten. Abschließend noch ein Auszug des Systemprotokolls eines Rechners mit Ubuntu 14.04, aus dem deutlich zu erkennen ist, dass der ersten drei Tasten ("REI") ignoriert werden:
Sep 9 16:42:48 ubuntu kernel: [ 568.061699] SysRq : This sysrq operation is disabled. Sep 9 16:42:54 ubuntu kernel: [ 573.215822] SysRq : This sysrq operation is disabled. Sep 9 16:42:57 ubuntu kernel: [ 576.346673] SysRq : This sysrq operation is disabled. Sep 9 16:43:00 ubuntu kernel: [ 579.131420] SysRq : Emergency Sync Sep 9 16:43:00 ubuntu kernel: [ 579.277440] Emergency Sync complete Sep 9 16:43:02 ubuntu kernel: [ 581.271897] SysRq : Emergency Remount R/O
Problembehebung
Dokumentation
Man-Pages
Info-Pages
Projekt-Homepage
Links
Intern
Weblinks
- Problembehandlung beim Neustart im Linux-Kompendium
- Notfall Übersichtsartikel
- Magische_S-Abf-Taste
- Magic_SysRq_key
- 4408/what-should-i-do-when-ubuntu-freezes
Testfragen
Testfrage 1
Testfrage 2
Testfrage 3
Testfrage 4
Testfrage 5
TMP
Auslösen auf der Kommandozeile
Die genannten Befehle können auch über die Shell (und somit auch durch Skripte) ausgelöst werden. Dazu wird in virtuelle Datei /proc/sysrq-trigger vom Kernel-Proc-API das entsprechende Zeichen geschrieben. Dies ist nur als root möglich. Der folgende Befehl löst beispielsweise einen sofortigen Reboot aus.
echo b > /proc/sysrq-trigger
Literatur
- Oliver Diedrich: Geht nicht? Gibts nicht! Hängende Linux-Systeme sicher ausschalten. In: c’t Nr. 26, 2008, S. 210
Weblinks
- Documentation/admin-guide/sysrq.rst auf kernel.org (Linux Kernel Archives) (englisch)
- Der Patch des Linux-Kernels, der das /proc/sysrq-trigger-Feature einbaute
- Magic SysRequest im Wiki von Ubuntuusers.de
Einzelnachweise
- ↑ c’t kompakt Linux. Heise, Hannover 2009.
- ↑ Ein Großteil dieses Artikels besteht aus Informationen, die der offiziellen Dokumentation für den Magic SysRq Key entnommen sind, welche sich auf Linux-Systemen üblicherweise in der Datei /usr/src/linux/Documentation/sysrq.txt befindet (zuletzt überarbeitet nach der Dokumentation zur Version 3.4). Als zuverlässige Gebrauchsanweisung sollte ebendiese Dokumentation für die entsprechende Kernel-Version des Systems herangezogen werden.
- ↑ Readme-Datei von kexec
- ↑ Vorlage:Webarchiv oder mjmwired.net, SysRq Dokumentation
- ↑ „Ubuntu 9.04“ im Ubuntuusers-Wiki oder Releasenotes zu Ubuntu 9.04 (englisch)