Was ist das SysRq-Dienstprogramm
Falls Ihr Kernel einfriert oder/und hängt, können Sie das „magische“ SysRq-Tool verwenden. Der „magische“ SysRq-Schlüssel ermöglicht den sofortigen Zugriff auf mehrere wichtige Kernel-Befehle, darunter Sync, Unmount, Kill-Prozesse, ShowMem, ShowPc und ReBoot. Gemäß der Linux-Kernel-Dokumentation:
Es ist eine „magische“ Tastenkombination, auf die Sie drücken können, auf die der Kernel reagiert, unabhängig davon, was er sonst noch tut, selbst wenn die Konsole nicht reagiert.So aktivieren Sie SysRq
Die SysRq-Taste kann durch Setzen des „Magic SysRq“ aktiviert werden. Sie müssen sicherstellen, dass die kernel.sysrq in sysctl.conf richtig eingestellt ist:
kernel.sysrq = 1 (SysRq turned ON) kernel.sysrq = 0 (SysRq turned OFF)Hinweis :Auf CentOS/RHEL 7 sollten Sie die Änderungen in „/usr/lib/sysctl.d/50-default.conf“ vornehmen
Die obigen Einstellungen stellen sicher, dass SysRq nach dem Systemstart standardmäßig aktiviert ist (standardmäßig ist es in CentOS/RHEL deaktiviert). Um es zu aktivieren, führen Sie es sofort in der aktuellen Sitzung aus und verwenden Sie den folgenden Befehl:
# echo 1 > /proc/sys/kernel/sysrq
Und um es wieder zu deaktivieren:
# echo 0 > /proc/sys/kernel/sysrqHINWEIS :Da die Aktivierung von SysRq jemandem mit physischem Konsolenzugriff zusätzliche Möglichkeiten gibt, wird empfohlen, es zu deaktivieren, wenn kein Problem behoben wird oder um sicherzustellen, dass der physische Konsolenzugriff ordnungsgemäß gesichert ist.
So lösen Sie ein SysRq-Ereignis aus
Es gibt mehrere Möglichkeiten, ein SysRq-Ereignis auszulösen. Auf den meisten Architekturen können SysRq-Ereignisse von der Konsole aus mit der folgenden Tastenkombination ausgelöst werden:
Alt+PrintScreen+[CommandKey]
Der PrintScreen ist der Schlüssel, der in den meisten Linux-Systemen als SysRq-Schlüssel verwendet wird.
Um auf ein nicht reagierendes System zuzugreifen, drücken Sie Alt+SysRq und H, um eine Liste mit Optionen zu erhalten. Unterschiedliche Kernel-Versionen können unterschiedliche Optionen haben. Um die unterstützten Optionen für Ihren aktuellen Kernel zu erhalten, können Sie den folgenden Befehl als root ausführen:
# echo h > /proc/sysrq-trigger
und überprüfen Sie die dmesg-Ausgabe. Unten ist ein Beispiel für ein RHEL 7-System:
# dmesg [ 4338.124035] SysRq : HELP : loglevel(0-9) reboot(b) crash(c) terminate-all-tasks(e) memory-full-oom-kill(f) kill-all-tasks(i) thaw-filesystems(j) sak(k) show-backtrace-all-active-cpus(l) show-memory-usage(m) nice-all-RT-tasks(n) poweroff(o) show-registers(p) show-all-timers(q) unraw(r) sync(s) show-task-states(t) unmount(u) force-fb(V) show-blocked-tasks(w) dump-ftrace-buffer(z)
Arten von SysRq-Ereignissen
Es gibt mehrere SysRq-Ereignisse, die ausgelöst werden können, sobald die SysRq-Funktion aktiviert ist. Diese variieren etwas zwischen den Kernelversionen, aber es gibt einige, die häufig verwendet werden:
Schlüssel | Funktion |
---|---|
m | Dump-Informationen über die Speicherzuweisung |
t | Thread-Statusinformationen ausgeben |
p | Aktuelle CPU-Register und Flags ausgeben |
c | das System absichtlich zum Absturz bringen (Kernel Panic). Nützlich zum Erfassen eines VMcores über kdump. |
s | alle gemounteten Dateisysteme sofort synchronisieren |
du | alle Dateisysteme sofort wieder schreibgeschützt einhängen |
b | Starten Sie den Computer sofort neu |
o | Maschine sofort ausschalten (falls konfiguriert und unterstützt) |
f | den Out-of-Memory-Killer (OOM) starten |
w | gibt Tasks aus, die sich in einem unterbrechungsfreien (blockierten) Zustand befinden |
So lösen Sie ein SysRq-Ereignis von der Root-Shell aus
Wenn Sie eine Root-Shell auf dem Rechner haben (und das System ausreichend reagiert, um dies zu tun), können Sie das Befehlsschlüsselzeichen auch in /proc/sysrq-trigger schreiben Datei. Dies ist nützlich, um diese Informationen auszulösen, wenn Sie sich nicht auf der Systemkonsole befinden, oder um sie von Skripten aus auszulösen.
# echo 'm' > /proc/sysrq-trigger
Diese Methode hat den zusätzlichen Vorteil, dass sie auch dann funktioniert, wenn kernel.sysrq auf 0 gesetzt.
CentOS / RHEL 6 :So konfigurieren Sie kdumpCentOS / RHEL 7 :So konfigurieren Sie kdump