Notfall-Neustart via SysRq-Taste bei hängendem Linux-Server
Ein Remote-Server mit Festplattendefekt reagiert nicht mehr auf normale Befehle – reboot und shutdown liefern I/O-Fehler, der SSH-Zugang hängt. In dieser Situation rettet der Linux SysRq-Mechanismus: ein direkter Kernel-Eingriff, der auch dann funktioniert, wenn das System scheinbar eingefroren ist.
Was ist SysRq?
SysRq (System Request) ist ein Mechanismus des Linux-Kernels, der bestimmte Aktionen direkt im Kernel auslöst – vorbei an laufenden Prozessen und dem normalen I/O-Stack. Er wurde ursprünglich für physische Tastatureingaben entwickelt (Alt+SysRq+Taste), funktioniert aber auch über das virtuelle Interface /proc/sysrq-trigger. Das ist für Remote-Server der entscheidende Vorteil.
SysRq aktivieren
Auf manchen Systemen ist SysRq standardmäßig deaktiviert. Den Status prüfen und bei Bedarf aktivieren:
# Status prüfen (0 = deaktiviert, 1 = alle Funktionen aktiviert)
cat /proc/sys/kernel/sysrq
# Temporär aktivieren (bis zum nächsten Reboot)
echo 1 > /proc/sys/kernel/sysrq
# Dauerhaft aktivieren (in /etc/sysctl.conf)
echo "kernel.sysrq = 1" >> /etc/sysctl.conf
Sofortiger Neustart (unsicher)
Im absoluten Notfall – wenn gar nichts mehr geht – erzwingt man einen sofortigen Neustart ohne Synchronisation oder Aushängen der Dateisysteme:
echo b > /proc/sysrq-trigger
Achtung: Das ist der harte Reset – wie den Strom abziehen. Dateisysteme werden nicht sauber ausgehängt, was zu Dateikorruption führen kann. Nur verwenden, wenn alle anderen Methoden versagen.
Der REISUB-Ablauf: Sicherer Notfall-Neustart
Der empfohlene Weg ist die REISUB-Sequenz – ein Akronym, das man sich mit „Raising Elephants Is So Utterly Boring“ merken kann. Jeder Buchstabe steht für einen SysRq-Befehl:
# R - Keyboard zurück in raw mode (bei physischen Sitzungen)
echo r > /proc/sysrq-trigger
# E - Alle Prozesse außer init beenden (SIGTERM)
echo e > /proc/sysrq-trigger
# I - Alle Prozesse außer init sofort beenden (SIGKILL)
echo i > /proc/sysrq-trigger
# S - Alle gemounteten Dateisysteme synchronisieren (sync)
echo s > /proc/sysrq-trigger
# U - Alle Dateisysteme als read-only remounten (umount)
echo u > /proc/sysrq-trigger
# B - Neustart (reboot)
echo b > /proc/sysrq-trigger
Zwischen den einzelnen Schritten jeweils einige Sekunden warten, damit der Kernel die Aktion abschließen kann, bevor der nächste Schritt ausgeführt wird.
Weitere nützliche SysRq-Befehle
# Alle Kernel-Threads anzeigen (ps-ähnlich, in dmesg sichtbar)
echo t > /proc/sysrq-trigger
# Out-of-Memory Killer aufrufen (beendet den speicherhungrigsten Prozess)
echo f > /proc/sysrq-trigger
# Aktuellen CPU-Register-Dump (kernel panic info in dmesg)
echo c > /proc/sysrq-trigger
# Alle SysRq-Befehle anzeigen
echo h > /proc/sysrq-trigger
Anwendungsfall: Festplattendefekt im Remote-Betrieb
Das klassische Szenario: Ein Server meldet I/O-Errors, der Root-Zugriff funktioniert noch via SSH (weil der SSH-Daemon im RAM läuft), aber reboot gibt den Fehler bash: /sbin/reboot: Input/output error. Die Festplatte ist defekt, das Dateisystem kann nicht mehr schreiben.
In diesem Fall führt man die REISUB-Sequenz über SSH aus. Die Sync-Befehle (s, u) werden zwar fehlschlagen, da die Festplatte defekt ist – aber sie schaden auch nicht. Der abschließende Neustart (b) bringt den Server zurück, danach kann man das Dateisystem mit fsck prüfen und ggf. von einem Backup wiederherstellen.
Fazit
Der SysRq-Mechanismus ist eine der wenigen Rettungsoptionen, wenn ein Linux-Server sich nicht mehr normal neu starten lässt. REISUB ist der sicherste Weg – E und I beenden Prozesse geordnet, S und U sichern die Dateien soweit möglich, B startet neu. Jeder Linux-Administrator sollte diese Sequenz kennen und idealerweise SysRq im Normalbetrieb aktiviert haben.


