GNU/Linux >> Linux Esercitazione >  >> Linux

L'arresto richiede troppo tempo? Ecco come indagare e correggere lunghi tempi di spegnimento in Linux

Il tuo sistema Linux sta impiegando troppo tempo per spegnersi? Di seguito sono riportati i passaggi che puoi eseguire per scoprire la causa dell'arresto ritardato e risolvere il problema.

Spero che tu abbia un po' di familiarità con il concetto sigterm e sigkill.

Quando spegni il tuo sistema Linux, invia il sigterm e chiede educatamente di interrompere i processi in esecuzione. Alcuni processi si comportano in modo anomalo e ignorano il sigterm e continuano a funzionare.

Ciò potrebbe causare un ritardo nel processo di spegnimento poiché il sistema attenderà l'arresto dei processi in esecuzione per un periodo di tempo predefinito. Dopo questo periodo di tempo, invia il segnale di kill per forzare l'arresto di tutti i restanti processi in esecuzione e arresta il sistema. Consiglio di leggere su sigterm vs sigkill per capire la differenza.

Infatti, in alcuni casi, sullo schermo nero vedresti un messaggio come "un lavoro di arresto è in esecuzione".

Se il tuo sistema impiega troppo tempo a spegnersi, puoi procedere come segue:

  • Controlla quale processo/servizio impiega troppo tempo e se puoi rimuoverlo o riconfigurarlo per farlo funzionare correttamente.
  • Modifica il periodo di attesa predefinito prima che la forza del sistema arresti i processi in esecuzione. [Risoluzione rapida e sporca]

Sto usando Ubuntu qui che usa systemd. I comandi e i passaggi qui riportati sono validi per qualsiasi distribuzione Linux che utilizza systemd (la maggior parte lo fa).

Verifica quali processi causano lunghi arresti in Linux

Se vuoi capire cosa c'è che non va, dovresti controllare cosa è successo all'ultimo spegnimento. Usa questo comando per ottenere il potere di "So cosa hai fatto l'ultima sessione" (gioco di parole):

journalctl -rb -1

Il comando journalctl consente di leggere i log di sistema. Con le opzioni '-b -1' filtri i log per l'ultima sessione di avvio. Con l'opzione '-r', i log vengono visualizzati in ordine cronologico inverso.

In altre parole, il comando "journalctl -rb -1" mostrerà i registri di sistema appena prima che il tuo sistema Linux fosse spento l'ultima volta. Questo è ciò di cui hai bisogno per analizzare il problema del lungo spegnimento in Linux.

Nessun registro del diario? Ecco cosa dovresti fare

Se non ci sono registri del diario, assicurati che la tua distribuzione utilizzi systemd.

Anche su alcune distribuzioni Linux con systemd, i registri del journal non sono attivati ​​per impostazione predefinita.

Assicurati che /var/log/journal esista. In caso contrario, crealo:

sudo mkdir /var/log/journal

Dovresti anche controllare il contenuto del file /etc/systemd/journald.conf e assicurarti che il valore di Storage sia impostato su auto o persistente.

Trovi qualcosa di sospetto nei log? C'è un processo/servizio che si rifiuta di interrompere? In caso affermativo, indagare se è possibile rimuoverlo senza effetti collaterali o se è possibile riconfigurarlo. Non rimuovere alla cieca roba qui, per favore. Dovresti conoscere il processo.

Accelera lo spegnimento in Linux riducendo il timeout di arresto predefinito [Correzione rapida]

Il periodo di attesa predefinito per lo spegnimento è generalmente impostato a 90 secondi. Il tuo sistema tenta di forzare l'arresto dei servizi dopo questo periodo di tempo.

Se desideri che il tuo sistema Linux si spenga rapidamente, puoi modificare questo periodo di attesa.

Troverai tutte le impostazioni di systemd nel file di configurazione che si trova in /etc/systemd/system.conf. Questo file dovrebbe essere riempito con molte righe che iniziano con #. Rappresentano i valori predefiniti delle voci nel file.

Prima di fare qualsiasi cosa, sarà una buona idea fare una copia del file originale.

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

Cerca DefaultTimeoutStopSec qui. Probabilmente dovrebbe essere impostato su 90 sec.

#DefaultTimeoutStopSec=90s

Devi cambiare questo valore in qualcosa di più conveniente come 5 o 10 secondi.

DefaultTimeoutStopSec=5s

Se non sai come modificare il file di configurazione nel terminale, usa questo comando per aprire il file per la modifica nell'editor di testo predefinito del tuo sistema (come Gedit):

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

Non dimenticare di rimuovere il # prima di DefaultTimeoutStopSec . Salva il file e riavvia il sistema.

Questo dovrebbe aiutarti a ridurre il ritardo di spegnimento del tuo sistema Linux.

Problema watchdog!

Linux ha un modulo chiamato watchdog che viene utilizzato per monitorare se determinati servizi sono in esecuzione o meno. Potrebbe essere configurato per riavviare automaticamente i sistemi se vengono bloccati a causa di un errore del software.

È insolito utilizzare Watchdog su sistemi desktop perché è possibile arrestare o riavviare manualmente il sistema. Viene spesso utilizzato su server remoti.

Il primo controllo del watchdog è in esecuzione:

ps -af | grep watch*

Se watchdog è in esecuzione sul tuo sistema, puoi modificare il valore di ShutdownWatchdogSec da 10 minuti a un valore inferiore nel file di configurazione di systemd /etc/systemd/system.conf.

Lettura consigliata:

Scopri quanto tempo ci vuole per avviare il tuo sistema Linux

Quanto tempo impiega il tuo sistema Linux per avviarsi? Ecco come scoprirlo con il comando systemd-analyze.

Sei riuscito a risolvere il lungo arresto?

Spero che questo tutorial ti abbia aiutato a indagare e risolvere il problema di arresto prolungato sul tuo sistema. Fammi sapere nei commenti se sei riuscito a risolverlo.



Linux
  1. Come disabilitare i comandi di spegnimento e riavvio in Linux

  2. Come controllare la versione del sistema operativo e di Linux

  3. Come visualizzare la data e l'ora di riavvio del sistema Linux

  4. Come utilizzare il comando di arresto e riavvio di Linux con esempi

  5. Come montare e smontare un file system in Linux

Come installare e configurare Redis su un sistema Linux

Come tracciare e tracciare un processo Linux

Come installare e utilizzare YouTube-DL su sistema Linux

Come modificare nome utente e nome host su sistema Linux

Come installare e configurare AnyDesk su sistema Linux

Come installare e configurare Django su sistema Linux