GNU/Linux >> Znalost Linux >  >> Linux

Zamrzlý systém Linux? Zde jsou 3 způsoby, jak se s tím vypořádat

Je známo, že Linux je velmi stabilní, ale i ten nejstabilnější systém může narazit na situace, které způsobí, že přestane reagovat. Pak přijde ten hrozný pocit, když stisknete a držíte „Power“. Existuje několik triků s Linuxem, které lze v takovém případě vyzkoušet. V tuto chvíli se nesnažíme uložit žádnou neuloženou práci. Chceme najít způsob, jak se vyhnout restartu, nebo alespoň poskytnout ten nejčistší restart, abychom se vyhnuli korupci.

Pro účely tohoto článku lze Linux vnímat jako sadu 2 zásobníků:Zásobník jádra a Zásobník uživatelů. Někde uvnitř zásobníku uživatelů máte spuštěné programy. Více než pravděpodobně X server, správce oken a některé programy. Tento seznam programů, včetně X serveru, si můžete představit jako další zásobník uvnitř zásobníku uživatelů. Tento koncept pomůže novějším uživatelům Linuxu pochopit některé z úkolů, které provedeme později.

1. Zabijte nereagující program pomocí xkill

Pokud používáte plochu Linuxu, vaším prvním krokem by měl být pokus o použití funkce spustit příkaz správce oken (alt+f2 v Ubuntu). Pokud budete mít štěstí, objeví se dříve než později.

Poté můžete spustitxkill a ukažte kurzorem na zaniklé okno a klikněte na něj.

Xkill funguje rychleji než tradiční ikona X nebo klepnutí pravým tlačítkem myši na okno na hlavním panelu a kliknutí na tlačítko Zavřít. Xkill zabíjí okamžitě bez kladení otázek.

2. Oživte zamrzlý systém Linux pomocí virtuálních konzolí (TTY)

Někdy nebudete mít takové štěstí, systém se může zdát úplně mrtvý.

To může být jen iluze. Pamatujete si zásobník programů uvnitř uživatelského zásobníku? Pojďme s tímto obrázkem chvíli pracovat.

I když se může zdát, že kořenem zásobníku uživatelů bude X. Není.

X Window System běží na virtuální konzoli (VC ), také označovaný jako TTY. V souborovém systému jsou reprezentovány jako /dev/ttyX. Linux má k dispozici několik VC. Pokus o přístup k jinému vám může vrátit kontrolu.

Můžete požádat o jiný VC stisknutím CTRL+ALT+F{1,6} z prostředí GUI nebo ALT+F{1,6} z jiného VC. Výše uvedený stisk klávesy vám umožní přístup k VC 1 až 6. Grafické rozhraní běží na VC 7+.

Při jednání s nestabilním systémem může i žádost o změnu VC chvíli trvat, takže buďte trochu trpěliví.

Pokud je váš pokus o změnu virtuální konzole úspěšný, budete vyzváni k zadání vašeho uživatele a hesla. Poté budete mít konzolu textového režimu. Váš systém by zde měl znovu získat určitou stabilitu, to je částečně, protože virtuální konzole, kde běží X a vše ostatní, již není prioritou.

Jakmile jste přihlášeni, máte několik možností.

  • Můžete se pokusit zabít nefunkční program pomocízabití nebo zabít příkaz.
  • Můžete ukončit správce oken, X server nebo správce přihlášení. Tím se ukončí všechny podřízené procesy a pokud vše půjde dobře, váš správce přihlášení se restartuje a nabídne vám vaši grafickou přihlašovací obrazovku.

3. Když vše ostatní selže, promluvte si s jádrem pomocí SysReq

Někdy ani přepnutí na TTY nefunguje. Celý systém je mrtvý. Ještě se nevzdávej, ještě jednou, více než pravděpodobná iluze. Linux má pro situace, jako je tato, ještě jednu vlastnost.

Pokud je zkompilován v jádře a povolen v souboru, Linux vám poskytuje prostředky k odesílání přednastavených požadavků přímo do jádra. To je užitečné v situaci, kdy je celý zásobník uživatelů mrtvý. Je známá jako Magic SysRq klíč . Zkompilovaný a ve výchozím nastavení povolený ve většině distribucí by tomu měl zabránit pouze Kernel Panic.

Chcete-li potvrdit, že tato možnost byla nastavena při kompilaci jádra, můžete se pokusit najít konfigurační soubor aktuálního jádra v /boot. Hledejte volbu CONFIG_MAGIC_SYSRQ. Jak již bylo zmíněno, je zkompilován a povolen ve většině distribucí. Chcete-li potvrdit, že je povoleno, spusťte následující:

sysctl kernel.sysrq

Na starších systémech jste měli 2 možnosti:0 a 1. Bylo to buď VYPNUTO nebo ZAPNUTO. Na novějších je lepší kontrola nad tím, které příkazy jsou povoleny.

Jakákoli hodnota nad 1 znamená, že některé příkazy jsou povoleny. Více podrobností naleznete zde.

Chcete-li dočasně nastavit jinou hodnotu, spusťte následující příkaz:

sudo sysctl -w kernel.sysrq=value

Chcete-li tuto hodnotu trvale změnit, upravte /etc/sysctl.conf . Vyhledejte kernel.sysrq a nastavte požadovanou hodnotu.

Nejjednodušší způsob, jak zjistit, zda to funguje, je vyzkoušet. Doporučuji také otestovat a naučit se sadu úhozů, dokud je systém stabilní. Když spustíte volání SysRq, jádro se pokusí odpovědět. Tuto odezvu lze vidět, pouze pokud se nacházíte ve virtuální konzoli 1 až 6. Pokud nelze přesunout fokus mimo X, neuvidíte odpovědi. To neznamená, že to nefunguje.

Existuje mnoho příkazů, které lze odeslat. Celý seznam je k vidění zde. Doporučuji zapamatovat si následující:

Klíče Popis
Alt + SysRq + r Vypne klávesnici z režimu raw a odebere kontrolu z X
Alt + SysRq + e Pošlete SigTerm všem procesům a dejte jim šanci ukončit slušně
Alt + SysRq + i Poslat SigKill všem procesům
Alt + SysRq + k Zabijte všechny procesy v aktuální virtuální konzoli
Alt + SysRq + s Synchronizujte veškerý připojený souborový systém, vyprázdněte všechna data na disk
Alt + SysRq + u Znovu připojit celý souborový systém pouze pro čtení
Alt + SysRq + b Okamžitě restartujte systém, nesynchronizuje se ani neodpojuje
Alt + SysRq + o Systém vypnutí

Tento krátký seznam příkazů vám poskytuje nový výkonný nástroj při řešení nestabilního systému. Pokud při odesílání požadavku nevidíte odpovědi jádra, dejte mezi příkazy několik sekund. Při požadavku na provoz HDD věnujte pozornost kontrolce HDD.

Existují 2 sekvence, které stojí za zapamatování.

Alt + SysRq + r e k

Tato sekvence je vhodná pro restart nereagujícího X serveru. Klávesnici nejprve vyvedete z nezpracovaného režimu pomocí Alt + SysRq + r . Poté požádáte o zaslání SIGTERM na všechny procesy pomocí Alt + SysRq + e . X server se může restartovat s tímto požadavkem. Pokud ano, zachránili jste svůj systém. Pokud ne, pokračujte třetím požadavkem, Alt + SysRq + k . Která odešle SIGKILL všem procesům v aktuální virtuální konzoli.

Pokud váš systém po výše uvedené sekvenci stále nereaguje, měli byste přejít k této další sekvenci.

Alt + SysRq + r e i s u b

Tento poslední příkaz spustí nouzový restart.

  • r :Vypnutí klávesnice z nezpracovaného režimu
  • e :Odeslat SIGTERM všem procesům
  • i :Odeslat SIGKILL všem procesům
  • s :Synchronizace všech připojených souborových systémů
  • u :Nouzové opětovné připojení pouze pro čtení
  • b :Okamžitě restartujte systém

Nyní jste vybaveni tím nejlepším nástrojem proti nereagujícímu systému, který znám. Pro ukázku můžete sledovat toto video z mého kanálu YouTube.

Doufám, že jste se v tomto článku dozvěděli něco nového o práci se zamrzlým systémem Linux. Rád bych znal váš názor na to. Použijte prosím sekci komentářů a podělte se o své myšlenky.


Linux
  1. Monitorujte svůj systém Linux ve svém terminálu pomocí procps-ng

  2. Analyzujte linuxové jádro pomocí ftrace

  3. Zlepšete výkon systému Linux pomocí noatime

  1. Linux Shutdown Command (s příklady)

  2. Ladění linuxového jádra pomocí QEMU

  3. Jsou různá jádra Linux/Unix zaměnitelná?

  1. Pochopení systémových volání na Linuxu pomocí strace

  2. Plánování systémových úloh pomocí Cronu na Linuxu

  3. Jak zkontrolovat verzi jádra v Linuxu