Z premedytacją robię repost, bo nie ma co się silić na oryginalność w temacie obsługi systemu, a dużo ludzi nadal nie wie, do czego służy ten zabawny klawisz
na ich klawiaturach.
Całkiem spora grupa osób wykorzystuje Linuksa jako podstawowe środowisko pracy, dziwi więc fakt, że większość z nich nie zdaje sobie sprawy z istnienia tak przydatnego klawisza, jak SysRq. Oczywiście, jego przydatność do pracy z codziennymi aplikacjami jest raczej znikoma, jednak okazuje się on nieoceniony, kiedy aplikacje te zawiodą.
Jak często zdarza ci się sięgać do przycisku "reset", kiedy jakiś pamięciożerny program zajmie cały bufor iksów i komputer przestanie reagować na jakiekolwiek klawisze? Nawet, jeśli zdarzyło ci się to tylko raz w życiu, czy nie wolałbyś uniknąć wtedy konieczności rebootowania?
Z pomocą przychodzi nam debugger jądra. Jest on uruchamiany poprzez przekazanie wartości 1
do węzła /proc/sys/kernel/sysrq
i jest domyślną wartością dla większości systemów. Jeśli chcesz to zrobić ręcznie, wystarczy:
echo 1 > /proc/sys/kernel/sysrq
W PLD działanie tego klawisza można kontrolować za pomocą pliku /etc/sysctl.conf
:
# Enable the magic-sysrq key kernel.sysrq = 1
SysRq to klawisz, którego obsługi w systemie linuksowym nie może przejąć żaden proces. Każde jego przyciśnięcie (a jest wywoływany przez jednoczesne przytrzymanie Alt i PrtScr) jest przetwarzane na poziomie kernela. O ile sam SysRq nie daje nam nic, o tyle jego przytrzymanie i przyciśnięcie jegnego z pozostałych klawiszy może przynieść o wiele ciekawsze rezultaty. Pełna lista poniżej:
- Alt+SysRq+H wyświetla pomoc. Jest to lista możliwych funkcji z wyróżnionymi literami. Każda wyróżniona litera to skrót klawiszowy, który daną funkcję wyzwala. Jest to jedyna kombinacja, którą można bezpiecznie wypróbować na sprawnym systemie.
- Alt+SysRq+B powoduje natychmiastowy reboot systemu, bez odmontowania dysków i zapisania ich buforów. Użycie w większości przypadków zaowocuje uszkodzonym systemem plików.
- Alt+SysRq+E wysyła sygnał
TERM
do wszystkich procesów z wyjątkiem procesu init, prosząc o samounicestwienie wyżej wymienionych. - Alt+SysRq+I wysyła sygnał
KILL
do wszystkich procesów z wyjątkiem procesu init, wymuszając zabicie wszystkich procesów. - Alt+SysRq+K wysyła sekwencję SAK. Powoduje uśmiercenie wszystkich procesów związanych z bieżącym terminalem (bądź konsolą wirtualną). Przydatne, kiedy iksy odmówią współpracy.
- Alt+SysRq+L wysyła sygnał
KILL
do wszystkich procesów, z procesem init włącznie. Zabicie procesu init powoduje unieruchomienie całego systemu. - Alt+SysRq+M wypisuje informacje o pamięci. Przydatne tylko do debugowania.
- Alt+SysRq+O wyłącza system, jeśli funkcja taka jest dostępna.
- Alt+SysRq+P wypisuje na bieżącą konsolę zawartość rejestrów i flag procesora. Przydatne tylko przy debugowaniu jądra.
- Alt+SysRq+R przełącza tryb raw klawiatury. Pozwala na wysłanie Ctrl+Alt+Del nawet jeśli zawiesi się obsługująca aktualnie klawiaturę sesja X.
- Alt+SysRq+S wymusza synchronizację buforów dyskowych dla wszystkich zamontowanych systemów plików. Przydatne jeśli musisz wymusić reboot, a nie chcesz ryzykować niespójności danych.
- Alt+SysRq+T powoduje wypisanie listy wszystkich zadań.
- Alt+SysRq+U próbuje przemontować wszystkie systemy plików w trybie tylko do odczytu. Powoduje synchronizację buforów dyskowych i pomaga uniknąć sprawdzania spójności dysków przy ponownym starcie.
- Alt+SysRq+cyfry zmienia poziom debugowania (gadatliwość kernela) w zakresie od 0 (tylko Panic i Oops) do 9.