Hlavní navigace

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

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.

Tweetni to Odměnte autora  Jak to funguje?

Ú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?

       

Petr Krčmář

Petr Krčmář

Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. Vystudoval elektroniku se zaměřením na počítačové systémy, nyní se zabývá médii, především těmi elektronickými.

Ohodnoťte jako ve škole:
Průměrná známka 1,15
Tweetni to Odměnte autora  Jak to funguje?

Přihlaste svůj firemní web do soutěže WebTop100

 

Soutěžní kategorie:

  • Firemní web (11 oborových žebříčků)
  • Digitální kampaň
  • Microsite
  • Mobilní řešení
  • Nejefektivnější digitální řešení
  • Social media marketing
Zjistit více informací o soutěži »        

Přehled názorů

Pěkné
Blaazen von Nikde 28. 8. 2012 00:39
Nový
REIUSB
Stevko 28. 8. 2012 00:40
Nový
├ 
Re: REIUSB
tewy 28. 8. 2012 02:11
Nový
│
├ 
Re: REIUSB
banan 28. 8. 2012 02:18
Nový
│
├ 
Re: REIUSB
Petr Krčmář 28. 8. 2012 08:43
Nový
│
│
├ 
Re: REIUSB
lubik 28. 8. 2012 08:52
Nový
│
│
└ 
Re: REIUSB
Tomáš Klas 28. 8. 2012 12:38
Nový
│
│
 
└ 
Re: REIUSB
Ondřej Caletka 28. 8. 2012 13:02
Nový
│
│
 
 
└ 
Re: REIUSB
Tomáš Klas 28. 8. 2012 13:26
Nový
│
│
 
 
 
└ 
Re: REIUSB
rr 28. 8. 2012 23:20
Nový
│
│
 
 
 
 
└ 
Re: REIUSB
Tomáš Klas 29. 8. 2012 07:46
Nový
│
└ 
Re: REIUSB
Martin Mareš 28. 8. 2012 09:25
Nový
│
 
└ 
Re: REIUSB
Dan Ohnesorg 28. 8. 2012 12:52
Nový
├ 
Re: REIUSB
Rhinox 28. 8. 2012 07:01
Nový
│
└ 
Re: REIUSB
Stanislav Sobotka 28. 8. 2012 10:49
Nový
└ 
Re: REIUSB
Prezdivka neni zas tak… povinna 17. 9. 2012 17:35
Nový
skvele
a 28. 8. 2012 00:57
Nový
└ 
Re: skvele
tuxmartin :-) 28. 8. 2012 02:30
Nový
Počet bitů
Nespokojený čtenář 28. 8. 2012 07:23
Nový
├ 
Re: Počet bitů
Zdeněk Borecký 28. 8. 2012 08:45
Nový
└ 
Re: Počet bitů
Petr Krčmář 28. 8. 2012 08:48
Nový
sysctl
PeBo 28. 8. 2012 07:36
Nový
Preklad iného článku?
kagro 28. 8. 2012 07:48
Nový
├ 
Re: Preklad iného článku?
nasson 28. 8. 2012 08:00
Nový
└ 
Re: Preklad iného článku?
Petr Krčmář 28. 8. 2012 08:44
Nový
 
└ 
Re: Preklad iného článku?
FaktZeJo 28. 8. 2012 13:34
Nový
vdaka
radovan.kopca 28. 8. 2012 08:02
Nový
Re: SysRq: klávesa pro řešení problémů
gooby 28. 8. 2012 08:39
Nový
├ 
Re: SysRq: klávesa pro řešení problémů
Barbucha 28. 8. 2012 08:57
Nový
└ 
Re: SysRq: klávesa pro řešení problémů
Tomas Kelemen 28. 8. 2012 09:13
Nový
 
└ 
Re: SysRq: klávesa pro řešení problémů
lyon 28. 8. 2012 09:37
Nový
Re: SysRq: klávesa pro řešení problémů
NN 28. 8. 2012 09:00
Nový
Zvedavost
hrrr 28. 8. 2012 09:26
Nový
├ 
Re: Zvedavost
Froggy 28. 8. 2012 09:32
Nový
│
└ 
Re: Zvedavost
Ondřej Caletka 28. 8. 2012 13:44
Nový
│
 
└ 
Re: Zvedavost
Me 1. 9. 2012 15:22
Nový
│
 
 
└ 
Re: Zvedavost
Ondřej Caletka 4. 9. 2012 11:26
Nový
├ 
Re: Zvedavost
Rover623 28. 8. 2012 09:37
Nový
└ 
Re: Zvedavost
arno3t 2. 9. 2012 16:52
Nový
SysRq + w ?
Martin 28. 8. 2012 09:33
Nový
└ 
Re: SysRq + w ?
Stanislav Sobotka 28. 8. 2012 10:52
Nový
Nestává se to příliš často...
jehovista 28. 8. 2012 10:26
Nový
alt+sysrq+r
e3k 28. 8. 2012 10:52
Nový
Anketa
Rovano 28. 8. 2012 11:33
Nový
diky
asdfg 28. 8. 2012 13:10
Nový
co takhle ssh?
Zdenek Henek 29. 8. 2012 07:54
Nový
└ 
Re: co takhle ssh?
Tomáš Klas 29. 8. 2012 08:38
Nový
Alt + SysRq + k nefunguje
al 29. 8. 2012 10:44
Nový
pravý-levý Alt
dm 29. 8. 2012 18:51
Nový
double restart: minulost
karpi 2. 9. 2012 12:22
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem