GNU/Linux >> Znalost Linux >  >> Linux

Vypínání trvá příliš dlouho? Zde je návod, jak prozkoumat a opravit dlouhou dobu vypínání v Linuxu

Vypnutí vašeho systému Linux trvá příliš dlouho? Zde jsou kroky, které můžete podniknout, abyste zjistili, co je příčinou opožděného vypnutí, a problém vyřešili.

Doufám, že jste trochu obeznámeni s konceptem sigterm a sigkill.

Když vypnete systém Linux, odešle sigterm a zdvořile požádá běžící procesy, aby se zastavily. Některé procesy se chovají špatně a ignorují sigterm a běží dál.

To by mohlo způsobit zpoždění procesu vypnutí, protože váš systém bude čekat na zastavení běžících procesů po předem definovanou dobu. Po uplynutí této doby odešle signál pro ukončení, aby vynutil zastavení všech zbývajících běžících procesů a vypne systém. Doporučuji přečíst si o sigterm vs sigkill, abyste pochopili rozdíl.

Ve skutečnosti se v některých případech na černé obrazovce zobrazí zpráva jako „probíhá úloha zastavení“.

Pokud vašemu systému trvá vypínání příliš dlouho, můžete provést následující:

  • Zkontrolujte, který proces/služba trvá příliš dlouho a zda jej můžete odebrat nebo překonfigurovat, aby se choval správně.
  • Změňte výchozí čekací dobu, než vaše systémová síla zastaví běžící procesy. [Rychlá a špinavá oprava]

Používám zde Ubuntu, který používá systemd. Zde uvedené příkazy a kroky jsou platné pro jakoukoli distribuci Linuxu, která používá systemd (většina z nich).

Zkontrolujte, které procesy způsobují dlouhé vypínání v Linuxu

Pokud chcete zjistit, co je špatně, měli byste zkontrolovat, co se stalo při posledním vypnutí. Pomocí tohoto příkazu získáte sílu „Vím, co jsi dělal minulou relaci“ (zamýšlená slovní hříčka):

journalctl -rb -1

Příkaz journalctl vám umožňuje číst systémové protokoly. Pomocí voleb ‚-b -1‘ filtrujete protokoly pro poslední spouštěcí relaci. S volbou ‚-r‘ se protokoly zobrazují v obráceném chronologickém pořadí.

Jinými slovy, příkaz ‚journalctl -rb -1‘ zobrazí systémové protokoly těsně předtím, než byl váš systém Linux naposledy vypnut. To je to, co potřebujete k analýze problému dlouhého vypínání v Linuxu.

Žádné deníky? Zde je to, co byste měli udělat

Pokud neexistují žádné protokoly žurnálu, ujistěte se, že vaše distribuce používá systemd.

Dokonce i na některých distribucích Linuxu se systemd nejsou žurnálové protokoly standardně aktivovány.

Ujistěte se, že /var/log/journal existuje. Pokud ne, vytvořte jej:

sudo mkdir /var/log/journal

Měli byste také zkontrolovat obsah souboru /etc/systemd/journald.conf a ujistit se, že hodnota Storage je nastavena na auto nebo persistent.

Našli jste v protokolech něco podezřelého? Existuje proces/služba, která odmítá zastavit? Pokud ano, prozkoumejte, zda byste jej mohli odstranit bez vedlejších účinků nebo zda byste jej mohli překonfigurovat. Neodstraňujte tu věci slepě, prosím. Měli byste znát proces.

Urychlete vypínání v Linuxu snížením výchozího časového limitu zastavení [Rychlá oprava]

Výchozí čekací doba pro vypnutí je obvykle nastavena na 90 sekund. Váš systém se po tomto časovém období pokusí vynutit zastavení služeb.

Pokud chcete, aby se váš systém Linux rychle vypnul, můžete tuto čekací dobu změnit.

Všechna nastavení systemd najdete v konfiguračním souboru na adrese /etc/systemd/system.conf. Tento soubor by měl být vyplněn spoustou řádků začínajících #. Představují výchozí hodnoty položek v souboru.

Než cokoli uděláte, bude dobré vytvořit kopii původního souboru.

sudo cp /etc/systemd/system.conf /etc/systemd/system.conf.orig

Zde hledejte DefaultTimeoutStopSec. Pravděpodobně by měla být nastavena na 90 sekund.

#DefaultTimeoutStopSec=90s

Tuto hodnotu musíte změnit na něco pohodlnějšího, například 5 nebo 10 sekund.

DefaultTimeoutStopSec=5s

Pokud nevíte, jak upravit konfigurační soubor v terminálu, použijte tento příkaz k otevření souboru pro úpravy ve výchozím textovém editoru vašeho systému (jako je Gedit):

sudo xdg-open /etc/systemd/system.conf

Nezapomeňte odstranit # před DefaultTimeoutStopSec . Uložte soubor a restartujte systém.

To by vám mělo pomoci zkrátit zpoždění vypnutí vašeho systému Linux.

Problém s hlídacím psem!

Linux má modul s názvem watchdog, který se používá pro sledování, zda určité služby běží nebo ne. Může být nakonfigurován tak, aby se systémy automaticky restartovaly, pokud se zablokují kvůli chybě softwaru.

Je neobvyklé používat Watchdog na stolních systémech, protože systém můžete ručně vypnout nebo restartovat. Často se používá na vzdálených serverech.

Nejprve zkontrolujte, zda je spuštěn hlídací pes:

ps -af | grep watch*

Pokud na vašem systému běží watchdog, můžete změnit hodnotu ShutdownWatchdogSec z 10 minut na nižší hodnotu v konfiguračním souboru systemd /etc/systemd/system.conf.

Doporučená četba:

Zjistěte, jak dlouho trvá spuštění systému Linux

Jak dlouho trvá spuštění vašeho systému Linux? Zde je návod, jak to zjistit pomocí příkazu systemd-analyze.

Podařilo se vám opravit zdlouhavé vypínání?

Doufám, že vám tento tutoriál pomohl při vyšetřování a opravě problému s dlouhým vypínáním vašeho systému. Dejte mi vědět v komentářích, jestli se vám to podařilo opravit.



Linux
  1. Jak zakázat příkazy vypnutí a restartu v Linuxu

  2. Jak zkontrolovat verzi OS a Linuxu

  3. Příkazy pro restart a vypnutí Linuxu

  1. Jak zobrazit datum a čas restartu systému Linux

  2. Jak používat Linux Shutdown and Reboot Command s příklady

  3. Jak připojit a odpojit souborový systém v Linuxu

  1. Jak dlouho trvá spuštění vašeho systému Linux?

  2. Jak nainstalovat a používat Git v systému Linux

  3. Jak dlouho můj systém Linux běží?