GNU/Linux >> Tutoriels Linux >  >> Linux

L'arrêt prend trop de temps ? Voici comment enquêter et réparer les longs temps d'arrêt sous Linux

Votre système Linux met trop de temps à s'arrêter ? Voici les étapes à suivre pour déterminer la cause de l'arrêt différé et résoudre le problème.

J'espère que vous connaissez un peu le concept sigterm et sigkill.

Lorsque vous éteignez votre système Linux, il envoie le sigterm et demande poliment aux processus en cours de s'arrêter. Certains processus se comportent mal et ignorent le sigterm et continuent de fonctionner.

Cela pourrait retarder le processus d'arrêt car votre système attendra que les processus en cours d'exécution s'arrêtent pendant une période de temps prédéfinie. Après cette période, il envoie le signal d'arrêt pour forcer l'arrêt de tous les processus en cours d'exécution restants et arrête le système. Je recommande de lire sur sigterm vs sigkill pour comprendre la différence.

En fait, dans certains cas, vous verriez un message comme "une tâche d'arrêt est en cours d'exécution" sur l'écran noir.

Si votre système met trop de temps à s'arrêter, vous pouvez procéder comme suit :

  • Vérifiez quel processus/service prend trop de temps et si vous pouvez le supprimer ou le reconfigurer pour qu'il se comporte correctement.
  • Modifiez la période d'attente par défaut avant que votre système ne force l'arrêt des processus en cours d'exécution. [Résolution rapide et sale]

J'utilise Ubuntu ici qui utilise systemd. Les commandes et les étapes ici sont valables pour toute distribution Linux qui utilise systemd (la plupart le font).

Vérifiez quels processus provoquent un long arrêt sous Linux

Si vous voulez comprendre ce qui ne va pas, vous devriez vérifier ce qui s'est passé lors du dernier arrêt. Utilisez cette commande pour obtenir le pouvoir de "Je sais ce que vous avez fait lors de la dernière session" (jeu de mots :

journalctl -rb -1

La commande journalctl vous permet de lire les journaux système. Avec les options '-b -1', vous filtrez les journaux de la dernière session de démarrage. Avec l'option '-r', les journaux sont affichés dans l'ordre chronologique inverse.

En d'autres termes, la commande 'journalctl -rb -1' affichera les journaux système juste avant l'arrêt de votre système Linux pour la dernière fois. C'est ce dont vous avez besoin pour analyser le problème d'arrêt prolongé sous Linux.

Aucun journal de bord ? Voici ce que vous devez faire

S'il n'y a pas de journaux de journal, assurez-vous que votre distribution utilise systemd.

Même sur certaines distributions Linux avec systemd, les journaux de journal ne sont pas activés par défaut.

Assurez-vous que /var/log/journal existe. Si ce n'est pas le cas, créez-le :

sudo mkdir /var/log/journal

Vous devez également vérifier le contenu du fichier /etc/systemd/journald.conf et vous assurer que la valeur de Storage est définie sur auto ou persistent.

Trouvez-vous quelque chose de suspect dans les journaux ? Y a-t-il un processus/service qui refuse de s'arrêter ? Si oui, examinez si vous pouviez le supprimer sans effets secondaires ou si vous pouviez le reconfigurer. Ne supprimez pas aveuglément des éléments ici, s'il vous plaît. Vous devez connaître le processus.

Accélérez l'arrêt sous Linux en réduisant le délai d'arrêt par défaut [solution rapide]

La période d'attente par défaut pour l'arrêt est généralement fixée à 90 secondes. Votre système essaie de forcer l'arrêt des services après cette période.

Si vous souhaitez que votre système Linux s'arrête rapidement, vous pouvez modifier cette période d'attente.

Vous trouverez tous les paramètres systemd dans le fichier de configuration situé dans /etc/systemd/system.conf. Ce fichier doit être rempli de nombreuses lignes commençant par #. Ils représentent les valeurs par défaut des entrées du fichier.

Avant de faire quoi que ce soit, ce serait une bonne idée de faire une copie du fichier original.

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

Recherchez DefaultTimeoutStopSec ici. Il devrait probablement être réglé sur 90 secondes.

#DefaultTimeoutStopSec=90s

Vous devez changer cette valeur en quelque chose de plus pratique comme 5 ou 10 secondes.

DefaultTimeoutStopSec=5s

Si vous ne savez pas comment modifier le fichier de configuration dans le terminal, utilisez cette commande pour ouvrir le fichier à modifier dans l'éditeur de texte par défaut de votre système (comme Gedit) :

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

N'oubliez pas de supprimer le # avant DefaultTimeoutStopSec . Enregistrez le fichier et redémarrez votre système.

Cela devrait vous aider à réduire le délai d'arrêt de votre système Linux.

Problème de surveillance !

Linux a un module nommé watchdog qui est utilisé pour surveiller si certains services sont en cours d'exécution ou non. Il peut être configuré pour redémarrer automatiquement les systèmes s'ils sont suspendus en raison d'une erreur logicielle.

Il est inhabituel d'utiliser Watchdog sur des systèmes de bureau car vous pouvez arrêter ou redémarrer manuellement le système. Il est souvent utilisé sur des serveurs distants.

Le premier chien de garde de vérification est en cours d'exécution :

ps -af | grep watch*

Si watchdog est en cours d'exécution sur votre système, vous pouvez modifier la valeur ShutdownWatchdogSec de 10 minutes à une valeur inférieure dans le fichier de configuration systemd /etc/systemd/system.conf.

Lecture recommandée :

Découvrez combien de temps faut-il pour démarrer votre système Linux

Combien de temps votre système Linux met-il pour démarrer ? Voici comment le découvrir avec la commande systemd-analyze.

Avez-vous pu résoudre le long arrêt ?

J'espère que ce didacticiel vous a aidé à enquêter et à résoudre le problème d'arrêt prolongé de votre système. Faites-moi savoir dans les commentaires si vous avez réussi à le réparer.



Linux
  1. Comment désactiver les commandes d'arrêt et de redémarrage sous Linux

  2. Commandes de redémarrage et d'arrêt de Linux

  3. Comment afficher la date et l'heure de redémarrage du système Linux

  4. Comment utiliser la commande d'arrêt et de redémarrage de Linux avec des exemples

  5. Comment monter et démonter un système de fichiers sous Linux

Comment installer et configurer Redis sur le système Linux

Comment suivre et tracer un processus Linux

Comment installer et utiliser YouTube-DL sur le système Linux

Comment changer le nom d'utilisateur et le nom d'hôte sur le système Linux

Comment installer et configurer AnyDesk sur le système Linux

Comment installer et configurer Django sur le système Linux