Hlavní navigace

SysRq: klávesa pro řešení problémů

Petr Krčmář 28. 8. 2012

Nestává se to příliš často, ale i s Linuxem se můžete dostat do situace, kdy systém přestane odpovídat. Buď si za to můžete sami nebo jste narazili na nějakou nepříjemnou chybu. V každém případě je dobré mít v záloze nějaké řešení pro krizové situace. Jedno nabízí například klávesa SysRq, která umí zajímavé věci.

Úvodní poznámka: Funkce klávesy SysRq není v Linuxu žádnou novinkou, je to věc z opravdové linuxové prehistorie. Přesto se o ní příliš nemluví, i když vás dokáže dostat z mnoha problémů. Neškodí si proto o její funkci říct, začátečníky třeba tahle funkce překvapí.

Kouzelná klávesa SysRq (anglicky magic SysRq key) je kombinace kláves, pomocí kterých je možné jádru posílat příkazy bez ohledu na to, v jakém stavu se nachází uživatelské prostředí. Hlavní výhoda SysRq je v tom, že obvykle funguje i v případě zamrznutí prostředí nebo v situaci, kdy si některá aplikace přivlastní vstup z klávesnice a systém na ni přestane reagovat. Dokud jádro běží, je možné s ním takto komunikovat. Až „kernel panic“ zastaví i SysRq.

V takové situaci přichází řada na SysRq, pomocí které můžeme například bezpečně odpojit souborové systémy a restartovat počítač. Zmíněnou klávesu nalezneme obvykle v horní řadě kláves, za klávesou F12. U některých klávesnic je o jednu řadu níže, nebo někde úplně jinde. V každém případě je kombinována s funkci Print Screen. Klávesu najdeme i na noteboocích, kde je její umístění ještě variabilnější. Často je ale pro její stisknutí třeba navíc podržet klávesu Fn.

Aktivace SysRq

Aby bylo možné vůbec funkci klávesy začít využívat, je třeba ji v jádře zapnout. Některé distribuce mají ve výchozím stavu SysRq vypnutou kvůli bezpečnosti. Náhodný návštěvník, který by se dostal ke klávesnici, by totiž mohl začít provádět věci, které nechceme. Mohl by třeba zavřít šetřič obrazovky, který chrání počítač heslem. Pokud SysRq zapnete, dejte pozor na to, kdo se vám dostane ke klávesnici.

Nastavení svého systému zjistíte přečtením příslušného souboru v  /proc:

$ cat /proc/sys/kernel/sysrq

Pokud v něm máte zapsanou jedničku, máte SysRq aktivní. Nula znamená vypnuto. Aktivaci provedete prostým zápisem jedničky do tohoto souboru (samozřejmě jako root).

# echo "1" > /proc/sys/kernel/sysrq

Toto nastavení vydrží ale jen do příštího restartu systému. Pokud chcete, aby bylo permanentní, budete muset konfigurační volbu zapsat do

/etc/sysctl.conf. To provedete následujícím příkazem:
# sysctl -w kernel.sysrq=1

Pro pokročilé: Je možné také nastavit vyšší hodnotu, která nepovolí kompletní funkčnost SysRq, ale jen některé vlastnosti. Jde o devítibitovou hodnotu, ve které každý bit označuje jednu funkci. Zprava je to: kompletní povolení SysRq (jednička), ovládání logování, ovládání klávesnice, debugování dumpů, sync, remount na read-only, posílání signálů procesům, reboot a změna nice. Kombinací těchto bitů můžete povolit jen konkrétní možnosti. V mém Debianu je ve výchozím stavu nastaveno 438.

Teď už můžeme přejít k tomu hlavnímu: k zasílání příkazů jádru. To se provádí pomocí kombinace tří kláves: Alt+SysRq+příkaz. Nezapomeňte, že jádro předpokládá standardní rozložení QWERTY. Pokud používáte vlastní rozložení, bude jej jádro ignorovat a vy na to nesmíte zapomenout. Jinak budete posílat úplně jiné příkazy, než chcete.

Zamrzlý X server

Pokud zamrzne X server nebo některá aplikace, která vám zablokovala klávesnici, jste od systému odstřiženi. Zbytek systému ale funguje a pokud byste se dostali ke konzoli, můžete problém odstranit. Máte v zásadě dvě možnosti:

Alt + SysRq + r přepne klávesnici z raw módu zpět pod nadvládu jádra. Tím odeberete vládu nad vstupem zlobivé aplikaci. Pak můžete například pomocí Ctrl + Alt + F1 přepnout na textovou konzoli a začít řešit.

Alt + SysRq + k zabije všechny procesy na aktuální virtuální konzoli. Dojde tedy k zavření X serveru včetně všech aplikací, které pod ním běží. Je to podobné jako zaslání signálu pomocí Ctrl + Alt + Backspace, ale SysRq je jistější.

Bezbolestný restart systému

Pokud dojde k větší havárii a vy musíte restartovat počítač, můžete to udělat pomocí SysRq. To vám (na rozdíl od klasického resetu) umožní čistě odpojit souborové systémy, provést na nich synchronizaci a až poté provést reboot.

Někdo si pamatuje jen kombinaci kláves „sub“, tedy Sync, Umount, Boot. Pokud ale chcete předem pozavírat běžící aplikace, je lepší si pamatovat „reisub“. Jednotlivé klávesy jsou:

  • r – přepne klávesnici z raw módu a odebere ovládání z X
  • e – požádá slušně všechny procesy, aby se vypnuly (SIGTERM)
  • i – sestřelí zbývající procesy, které nereagovaly (SIGKILL)
  • s – zapíše cache na disky (jako sync)
  • u – odpojí svazky (jako mount -o remount -r -a)
  • b – okamžitý restart

Nejprve samozřejmě stisknete kombinaci Alt + SysRq a poté teprve postupně pomalu namačkáte klávesy „reisub“.

Další možnosti

Samozřejmě to není jediná možnost, existuje řada dalších příkazů, které takto můžete jádru předat. Například se vám mohou hodit:

  • Alt + SysRq + n – real time procesům je možné nastavovat nice
  • Alt + SysRq + f – zavolá OOM killer, který se zbaví náročné aplikace v paměti
  • Alt + SysRq + h – vypíše na terminál nápovědu ke klávesám (dobře se pamatuje)
  • Alt + SysRq + 0 – 9 – nastaví úroveň logování na konzoli
  • Alt + SysRq + w – vypíše úlohy v nepřerušitelném stavu
  • Alt + SysRq + o – vypne počítač

Toto je jen několik příkladů, prakticky každá klávesa na klávesnici posílá nějaký ten příkaz. Ostatní se ale hodí spíše vývojářům jádra než běžným uživatelům. Kompletní možnosti naleznete v dokumentaci jádra v sysrq.txt.

Na závěr ještě jednu zajímavost: SysRq můžete použít i na vzdáleném stroji. Buďto jako v nedávném našem článku Reboot serveru pingem můžete využít iptables a předem se připravit, nebo, pokud se ještě můžete přihlásit, můžete využít rozhraní v /proc, do kterého jednoduše zapisujete jednotlivé znaky, jako byste je mačkali na klávesnici.

# echo u > /proc/sysrq-trigger

Výše uvedený příkaz odpojí souborové systémy. Znaky samozřejmě posíláte už bez Alt a SysRq.

Zdroje

Anketa

Znali jste tuto funkci SysRq?

Našli jste v článku chybu?

28. 8. 2012 13:02

Stačí si přečíst odkazovaný dokument a je jasné, že příkaz s: „Will attempt to sync all mounted filesystems.

Když je filesystém odpojen, není co syncovat.

28. 8. 2012 2:30

>>A najednou se objevi tento clanek - dekuju moc :)
Zas tak najednou to neni ;-)

Kouzelná klávesa aneb PrintScreen jak ho neznáte - 5. 10. 2000 - http://www.root.cz/clanky/kouzelna-klavesa-aneb-printscreen-jak-ho-neznate/

Magická klávesa SysRQ - 11. 7. 2007 - http://www.abclinuxu.cz/clanky/tipy/magicka-klavesa-sysrq

SysRq: klávesa pro řešení problémů - 28. 8. 2012 - http://www.root.cz/clanky/sysrq-klavesa-pro-reseni-problemu/


Root.cz: Vypadl Google a rozbilo se toho hodně

Vypadl Google a rozbilo se toho hodně

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Podnikatel.cz: Udávání a účtenková loterie, hloupá komedie

Udávání a účtenková loterie, hloupá komedie

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Měšec.cz: Jak levně odeslat balík přímo z domu?

Jak levně odeslat balík přímo z domu?

Vitalia.cz: Říká amoleta - a myslí palačinka

Říká amoleta - a myslí palačinka

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Lupa.cz: Seznam mění vedení. Pavel Zima v čele končí

Seznam mění vedení. Pavel Zima v čele končí

Měšec.cz: Finančním poradcům hrozí vracení provizí

Finančním poradcům hrozí vracení provizí

DigiZone.cz: ČT má dalšího zástupce v EBU

ČT má dalšího zástupce v EBU

120na80.cz: Jak oddálit Alzheimera?

Jak oddálit Alzheimera?

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Vitalia.cz: Dáte si jahody s plísní?

Dáte si jahody s plísní?

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Lupa.cz: Proč firmy málo chrání data? Chovají se logicky

Proč firmy málo chrání data? Chovají se logicky

Lupa.cz: Propustili je z Avastu, už po nich sahá ESET

Propustili je z Avastu, už po nich sahá ESET

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Podnikatel.cz: Babiš: E-shopy z EET možná vyjmeme

Babiš: E-shopy z EET možná vyjmeme

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?