Post 1484
Unix

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.