Von Pinguinen und Elefanten – Magic SysRq

Irgendwann ist Dir sicherlich schon die SysRq Taste auf der Tastatur aufgefallen – auf deutschen Layouts oft auch Sys. Abbr. oder S-Abf. genannt. Diese Taste kann auf Linux Systemen wahre Wunder bewirken, denn der Linux Kernel bietet eine Debugging- bzw. Rettungsfunktionalität an, um einem verstimmten Kernel noch Befehle zu geben der so quer im RAM liegt, daß er von selbst nicht mehr panic’en kann. Leider ist diese Funktionalität – obwohl sie sehr gut dokumentiert ist – viel zu wenigen Admins bekannt.

Als Beispiel:
mit Alt+SysRq+s sagst Du dem Kernel – sofern er es noch kann – alle Dateisystemcaches auf die Platten zu schreiben. Solche Magic System Requests gibt es viele, und meiner Erfahrung nach sollte man die folgenden neun greifbar haben um einen havarierten Pinguin zu retten:

 

Tastenkürzel Reaktion des Kernels
Alt+SysRq+b Reboote das System ohne die Caches zu leeren oder die Dateisysteme zu unmounten.
Alt+SysRq+e  Sende allen Prozessen ein SIGTERM.
Alt+SysRq+f  Starte den Out-of-Memory Killer.
Alt+SysRq+i  Sende SIGKILL zu allen Prozesse.
Alt+SysRq+j  Versuche alle Dateisysteme zu unmounten.
Alt+SysRq+o  Abschaltung des Systems per ACPI bzw. APM (sofern von der Plattform unterstützt).
Alt+SysRq+r  Schalte die Tastatur in den RAW Modus.
Alt+SysRq+s  Schreibe alle Dateisystemcaches auf die Festplatten.
Alt+SysRq+u  Remounte alle Dateisysteme read only.

Das ist fast schon alles was man wissen sollte.

Magic System Requests einschalten

Abhängig von der Linux Distribution muß man die Magic System Requests erst einschalten. Dies geschieht über den kernel.sysrq Parameter in /etc/sysctl.conf:

Auf Red Hat Enterprise sowie Derivaten ist die Schnittstelle nach der Installation abgeschaltet. Im laufenden Betrieb kann die Schnittstelle über ein echo in /proc eingeschaltet werden:

Diese Änderung hat allerdings nur bis zum nächsten Reboot bestand. Für eine dauerhaft eingeschaltete Debug Schnittstelle setze kernel.sysrq in /etc/sysctl.conf auf 1. Oder lasse Puppet das für Dich erledigen.

Magic System Request nutzen

Sofern Du direkt an der Konsole oder über eine serielle Verbindung angeschlossen bist, kannst Du die Tastaturkürzel direkt verwenden. (Bei einer seriellen Leitung muß jedoch jeder Befehl mit einer BREAK Sequenz begonnen werden und dann innerhalb von 5 Sekunden erfolgen.)

Um alle Caches auf die Platten zu schreiben und anschließend zu rebooten

  • drücke Alt+SysRq+s
  • warte einen kurzen Moment
  • drücke Alt+SysRq+b

Nach jedem Kommando solltest Du dem System einen kurzen Moment geben um zu reagieren.
Eine gute Kombination um den havarierten Kernel halbwegs sicher abzuschießen ist REISUB. Und mit etwas Phantasie ist das sogar leicht zu merken.

Warum fragst Du? Und was hat dieser Artikel mit Elefanten zu tun?

  • Raising = Tastatur in den RAW Modus versetzen.
  • Elephants = sende SIGTERM an alle Prozesse
  • is = sende SIGKILL an alle Prozesse
  • so = schreibe alle Caches auf die Platten
  • utterly = unmount und remount als read only aller Dateisysteme
  • boring = reboot

Magic System Requests über SSH nutzen

Über eine SSH Verbindung funktionieren die Systemcodes auch, allerdings ohne Alt und SysRq denn das Drücken von Tasten kann man sich sparen. Dafür schreibt man einfach direkt nach /proc/sysrq-trigger.

Dadurch, daß keine Tasten auf der Tastatur benötigt werden, kann man sich r getrost sparen.

Sebastian Laubscher

Sebastian arbeitet seit Sommer 2013 für teamix als Senior Consultant und Trainer. Seine Kompetenzen liegen in den Bereichen Netzwerktechnik und Unix-/Linux Administration, speziell im Bereich der Automatisierung mit Puppet. Vor der Zeit bei teamix war er für einen großen deutschen ISP tätig.

 
Kommentare

Noch keine Kommentare vorhanden.

Hinterlassen Sie einen Kommentar