Magic SysRq key
Ten wpis będzie o czymś co większość z Was pewnie bardzo dobrze zna, a pewnie i czasem używa (oby jak najrzadziej). Mówię tutaj oczywiście o tytułowym “Magic SysRq key”. Co to takiego? Samo SysRq jest klawiszem, przez większość użytkowników zupełnie niezauważanym (tak samo jak “Scroll Lock”), i znajduje się on na tym samym klawiszu na klawiaturze co “Print Screen”. Ja jednak mam na myśli “mechanizm awaryjny” zaimplementowany w jądrze linux’a.
Do czego może on nam się przydać? Jest on niezwykle pomocny jeśli wpadniemy w jakieś poważniejsze problemy z naszym systemem, jak np. zawieszenie X’ów, aplikacji na konsoli lub inne tego typu pomniejsze problemy.
Większość nowoczesnych dystrybucji posiada tę funkcję wkompilowaną w jądro i włączoną. Jednak dla tych którzy sami kompilują jądro lub z jakichś przyczyn mają “Magic SysRq key” wyłączony:
- w menu konfiguracji kernel’a znajduje się on w
-> Kernel hacking -> Magic SysRq key
- aby go aktywować w systemie wykonujemy jako root polecenie:
echo 1 > /proc/sys/kernel/sysrq
lub
sysctl -w kernel.sysrq=1
Zamiast jedynki można też podać inne wartości żeby włączyć tylko niektóre z opcji “Magic SysRq key”:
- 0 – wyłącza SysRq
- 1 – włącza wszystkie funkcje SysRq
- 2 – włącza kontrolę nad poziomami logowania wiadomości do konsoli
- 4 – włącza kontrolę nad klawiaturą (SAK, unraw)
- 8 – włącza możliwość robienia “debug dump” pocesów
- 16 – włącza komendę sync
- 32 – włącza możliwość przemontowania systemów plików w tryb “tylko do odczytu”
- 64 – włącza wysyłanie sygnałów do procesów (term, kill, oom-kill)
- 128 – włącza możliwość uruchomienia ponownego maszyny oraz wyłączenia jej
- 256 – włącza możliwość zmiany poziomów nice wszystkich zadań RT
Zwłaszcza na serwerach warto się zastanowić chwilkę i włączyć tylko te opcje których potencjalnie możemy potrzebować.
Skoro już wiemy “jak to włączyć?” teraz czas na “jak tego używać?”:
Generalnie używamy poprzez wciśnięcie kombinacji klawiszy alt+SysRq+<klawisz>, gdzie <klawisz> stanowi klawisz z jedną z liter o których zaraz powiem.
W internecie bardzo często można znaleźć porady, aby wciskać sekwencję klawiszy r-e-i-s-u-b. Jednak czy to faktycznie ma sens? “R” przełącza nam klawiaturę z trybu RAW na XLATE, a mówiąc po ludzku i w skrócie, przełącza z obsługi jej przez X’y na obsługę bezpośrednio przez kernel. Przydaje się to wtedy, kiedy tym co nam zawiesiło jest serwer X’ów. Naciśnięcie kombinacji alt+SysRq+r powinno wtedy spowodować iż następne naciśnięcie alt+F1 pozwoli nam się wreszcie przełączyć na konsolę i zabić felerny program.
Kolejne klawisze ze wspomnianej sekwencji są już bardziej brutalne:
“E” wysyła sygnał SIGTERM do wszystkich działających procesów, z pominięciem init’a, czyli stara się je zakończyć w kulturalny sposób. Następujące po nim “i” robi prawie to samo z tym tylko, że zamiast sygnału SIGTERM wysyła SIGKILL. Powoduje to natychmiastowe zabicie wszystkich procesów z wyjątkiem init’a. Po “e” należy poczekać kilka sekund, aby dać czas procesom na zakończenie się. Wywołanie tych klawiszy nie pozostawia nam już odwrotu ponieważ poza jądrem i init’em nic już w naszym systemie nie żyje. Służy to temu, aby przed restartem komputera zakończyć wszystko co mogło by pisać po dysku, aby uniknąć strat danych.
A więc restart. To z kolei najlepiej zrobić wykorzystując pozostałe trzy funkcje. “S” zapisuje wszystkie bufory dyskowe z pamięci na fizyczny nośnik, aby zapisać wszystko co ewentualnie pozostało w buforze, a nie zostało jeszcze fizycznie zapisane na dyskach. “U” przemontowuje wszystkie systemy plików w trybu “tylko do odczytu”, aby mieć pewność, że nic im się nie stanie. No i na koniec “b” restartuje komputer.
Także jak widać ta popularna i powtarzana przez wielu, bez zastanowienia, sekwencja jak najbardziej ma sens, ale tylko pod warunkiem, że po “r” sprawdzimy czy nie odzyskaliśmy panowania nad systemem, a kolejne klawisze naciskamy w pewnych odstępach czasowych. Chyba że chcemy po prostu zrestartować komputer, ale wtedy śmiało można pominąć “r”, a teoretycznie wystarczy nawet samo s-u-b.
Z innych ciekawych klawiszy które warto wspomnieć:
- k – zabija wszystkie procesy na danej konsoli (ttyX, nie pomylić z emulatorem terminala)
- o – podobne do “b”, ale zamiast restartować komputer wyłącza go
- m – pozwala zobaczyć bardzo dokładne dane na temat pamięci
- p – wyświetli zawartość rejestrów oraz flag procesora
- c – !UWAGA! wywoła natychmiastowy kernel panic poprzez odwołanie się do adresu zerowego pamięci (NULL pointer dereference)
Pełną listę wszystkich klawiszy można znaleźć w źródłach jądra w katalogu z dokumentacją w pliku “sysrq.txt”.
Recent Comments