Written by m4r3k and tagged by články, linux.
Linux je stabilní systém, ale někdy se stane, že i tak jej potkají nějaké problémy. V takovém případě doporučuji vyzkoušet co umí magická SysRQ klávesa.
Klávesa SysRQ je určena k řešení problémů v případě, že se něco nad kernelem pokazí. Používají ji také vývojáři k debugování. Běžně s její pomocí dokážete resetovat X server, případně vám dokáže pomoct v případě, že musíte restartovat celý počítač - předejdete poškození souborového systému.
Co je třeba
Ke správné funkci musí být její podpora zakompilovaná v kernelu, což zajišťuje volba Magic SysRQ Key v části Kernel Hacking. Dále musí být její použití povoleno - to zkontrolujete tak, že si vypíšete obsah v /proc/sys/kernel/sysrq pomocí příkazu
cat /proc/sys/kernel/sysrq
V případě, že příkaz vypíše číslo 1, je vše v pořádku. Pokud číslo 0, tak musíte její funkci povolit. Můžete tak učinit dočasně, pomocí příkazu
echo "1" > /proc/sys/kernel/sysrq
nebo trvale přidáním řádku kernel.sysrq = 1 do souboru /etc/sysctl.conf. To provedete třeba příkazem
echo "kernel.sysrq = 1" >> /etc/sysctl.conf
Jednotlivé funkce
- Alt+SysRq+r
- Uvolní myš a klávesnici z držení X serveru, potom není problém i v zatuhlém systému stisknout
ALT+F{1,2,3,4,5,6}a
přepnout se tak do textové konsole, ze které můžete killnout x-server. - Alt+SysRQ+b
- Něco jako tlačítko reset. Rebootuje bez syncování disku a bez unmountování. Většinou se vyplatí použít v kombinaci s Alt+SysRQ+s a Alt+SysRQ+u; nemělo by pak dojít k poškození filesystému.
- Alt+SysRQ+k
- Tato kombinace zabije všechny procesy na současném terminálu.
- Alt+SysRQ+o
- Vypnutí prostřednictvím APM subsystému.
- Alt+SysRQ+s
- Zapíše všechna data z diskových cachí na disk. Občas bývá tato operace označována jako sync. Hojně se to používá v kombinaci s Alt+SysRQ+u a Alt+SysRQ+b k bezpečnému restartování, pokud zatuhne systém.
- Alt+SysRQ+u
- Tato kombinace přemountuje všechny připojené filesystémy do režimu pouze pro čtení. Opět se používá v kombinaci s Alt+SysRQ+s a Alt+SysRQ+b pro bezpečné restartování.
- Alt+SysRQ+m
- Vypíše informace o paměti na terminál. V openSUSE se informace vypisují na 10. terminál (ALT+F10).
- Alt+SysRQ+e
- Pošle signál SIGTERM všem procesům, vyjma procesu
init. - Alt+SysRQ+i
- Pošle signál SIGKILL všem procesům, vyjma procesu
init. - Alt+SysRQ+l
- Pošle signál SIGKILL všem procesům, včetně procesu
init. - Alt+SysRQ+f
- Zavolá oom_kill, což zabije proces, který spotřebovává všechnu dostupnou paměť.
- Alt+SysRQ+t
- Vypíše seznam o běžících procesech na terminál a také nějaké bližší informace k těmto procesům. V openSUSE se informace vypisují na 10. terminál (ALT+F10).
- Alt+SysRQ+h
- Vypíše nápovědu k SysRQ na terminál. Stejně bude reagovat i libovolná další klávesa, která není namapována na nějakou funkci. V openSUSE se informace vypisují na 10. terminál (ALT+F10).
- Alt+SysRQ+(0-9)
- Nastaví úroveň logování. Logovací informace jsou vypisovány na terminál. 0 znamená vypisuj jen informace jako je OOPs a PANIC.
- Alt+SysRQ+x
- Je k dispozici pouze na platformě PowerPC. Používá se pro xmon.
Grafické aplikace
Pokud použijete SysRQ klávesu k sestřelení X serveru, tak nejspíše nedostane čas obnovit text mode na terminálu. To může způsobit, že terminál bude nečitelný. Pokud se tak stane, vyzkoušejte příkaz reset, možná se vám podaří vrátit čitelný terminál.
Jiný přístup
K možnostem SysRQ je možné také přistupovat pomocí souborového systému /proc. Konkrétně pomocí souboru /proc/sysrq-trigger. Pokud do tohoto souboru pošlete písmeno, které připojujete k Alt+SysRQ, například
echo "h" > /proc/sysrq-trigger
tak se stane totéž, jako byste stiskli kombinaci kláves Alt+SysRQ+h - bude tedy na termínál vypsána nápověda ke klávese SysRQ.
Nemusí být až tak špatný nápad si tohle vytisknout a umístit někde poblíž počítače; až to budete potřebovat, tak se na tuhle stránku nejspíše nebudete moct dostat :-).
Více informací, i když v angličtině, najdete v souboru /usr/src/linux/Documentation/sysrq.txt.