Magia SysRq - Awaryjny Klawisz dla Twojego Serwera Linux
Ostatnia deska ratunku
Wyobraź sobie sytuację: zarządzasz zdalnym serwerem, który nagle przestaje odpowiadać. Nie możesz zalogować się przez SSH, strony internetowe nie działają, a pingi wracają z opóźnieniem lub wcale. Jedyne, co Ci pozostaje, to “twardy” restart przez panel dostawcy hostingu, ryzykując utratę niezapisanych danych i uszkodzenie systemu plików.
A co, jeśli istnieje sposób, aby “porozmawiać” z jądrem, nawet gdy reszta systemu nie działa? Tą ostatnią deską ratunku jest właśnie Magiczny klawisz SysRq.
Czym jest “Magic SysRq Key”?
SysRq (System Request) to specjalna funkcja w jądrze Linuksa, która pozwala na wykonywanie niskopoziomowych komend bezpośrednio na jądrze, z pominięciem większości normalnych mechanizmów systemowych. Działa tak długo, jak samo jądro nie jest całkowicie “martwe”. To potężne narzędzie do debugowania i awaryjnego odzyskiwania kontroli nad zawieszonym systemem.
Jak włączyć i używać SysRq?
Ze względów bezpieczeństwa, na wielu dystrybucjach funkcja ta jest domyślnie ograniczona. Pełną kontrolę włącza się za pomocą sysctl.
-
Sprawdzenie statusu:
cat /proc/sys/kernel/sysrqWartość
1oznacza, że wszystkie funkcje są włączone. Inne wartości (np.176) oznaczają, że tylko niektóre, bezpieczniejsze komendy są dozwolone. -
Włączenie pełnej funkcjonalności (tymczasowo):
sudo sysctl -w kernel.sysrq=1 -
Włączenie na stałe: Dodaj wpis do pliku
/etc/sysctl.conf(lub do pliku w/etc/sysctl.d/):kernel.sysrq = 1
Jak wywołać komendy?
-
Na maszynie fizycznej (z klawiaturą): Trzymaj wciśnięte klawisze
Alt+SysRq(często jest to ten sam klawisz coPrint Screen), a następnie wciśnij klawisz odpowiadający komendzie (np.bdla restartu).Alt+SysRq+b -
Na maszynie zdalnej (przez SSH lub konsolę): Nie mamy fizycznej klawiatury, więc używamy polecenia
echo, aby zapisać literę komendy do specjalnego pliku w/proc:echo b | sudo tee /proc/sysrq-trigger
Najważniejsze komendy SysRq: Sekwencja R-E-I-S-U-B
Najsłynniejszym zastosowaniem SysRq jest bezpieczny restart zawieszonego systemu. Zamiast “twardego” resetu, wykonujemy sekwencję komend, która minimalizuje ryzyko utraty danych. Łatwo ją zapamiętać jako hasło “Raising Elephants Is So Utterly Boring” (lub, w mniej cenzuralnej wersji, “Reboot Even If System Utterly Broken”).
Wykonuj każdą komendę, czekając kilka sekund pomiędzy nimi:
-
R -
echo r > /proc/sysrq-trigger- Raw: Przełącza klawiaturę z trybu
XLATEdo trybu surowego, odbierając kontrolę np. serwerowi graficznemu X.org. Pierwszy krok do odzyskania kontroli.
- Raw: Przełącza klawiaturę z trybu
-
E -
echo e > /proc/sysrq-trigger- End: Wysyła sygnał
SIGTERMdo wszystkich procesów (opróczinit), prosząc je o grzeczne zakończenie pracy.
- End: Wysyła sygnał
-
I -
echo i > /proc/sysrq-trigger- Interrupt: Wysyła sygnał
SIGKILLdo wszystkich procesów (opróczinit), brutalnie je kończąc. To na wypadek, gdyby nie posłuchały grzecznej prośby.
- Interrupt: Wysyła sygnał
-
S -
echo s > /proc/sysrq-trigger- Sync: Synchronizuje wszystkie zamontowane systemy plików. Zapisuje wszystkie dane z buforów na dysk. To kluczowy krok zapobiegający utracie danych!
-
U -
echo u > /proc/sysrq-trigger- Unmount: Przemontowuje wszystkie systemy plików w tryb tylko do odczytu (
read-only). To dodatkowe zabezpieczenie przed uszkodzeniem danych podczas restartu.
- Unmount: Przemontowuje wszystkie systemy plików w tryb tylko do odczytu (
-
B -
echo b > /proc/sysrq-trigger- Boot: Natychmiastowy restart systemu, bez odmontowywania systemów plików czy synchronizacji (ale zrobiliśmy to już w krokach
siu). Odpowiednik wciśnięcia przycisku “Reset”.
- Boot: Natychmiastowy restart systemu, bez odmontowywania systemów plików czy synchronizacji (ale zrobiliśmy to już w krokach
Inne przydatne komendy
h- Help: Wyświetla listę dostępnych komend w logu kernela (dmesg).m- Memory: Wyświetla informacje o użyciu pamięci.t- Tasks: Pokazuje listę aktualnie uruchomionych zadań (procesów).f- Freeze: Wywołuje “OOM killer” (Out-of-Memory killer), aby zabił najbardziej pamięciożerny proces. Przydatne, gdy system się zawiesił z powodu braku pamięci.
Podsumowanie
Magiczny klawisz SysRq to potężne narzędzie diagnostyczne i ratunkowe. Choć na co dzień nie jest potrzebny, w kryzysowej sytuacji wiedza o sekwencji REISUB może uratować Twoje dane i oszczędzić Ci wielu problemów. Warto włączyć tę funkcję na swoich serwerach i zapamiętać przynajmniej tę jedną, najważniejszą sekwencję.