Reboot Linux

Table des matières

Si vous utilisez une distribution Linux moderne, vous rencontrerez sûrement le message « Une tâche d’arrêt est en cours d’exécution » lors de l’arrêt, et le processus d’arrêt sera suspendu pendant 90 secondes maximum. Découvrez pourquoi ce message apparaît et comment vous pouvez l’atténuer.

C’est une fonction de sécurité, pas un bug

La toute première chose que vous devez savoir est que le message « Une tâche d’arrêt est en cours d’exécution » est une fonction de sécurité intégrée au système, et non un bug.

Les distributions Linux modernes comme Ubuntu, Fedora et Arch utilisent Systemd pour gérer les processus de démarrage et d’arrêt. Lorsque vous cliquez sur Arrêter, Systemd ne se contente pas de débrancher la fiche d’alimentation. Il envoie un signal poli appelé SIGTERM à chaque service et application en cours d’exécution. La plupart des applications, après avoir reçu ce signal, enregistrent leurs données, ferment leurs fichiers et s’arrêtent correctement.

Cependant, certains services ont besoin de plus de temps pour accomplir leurs tâches et ignorent le signal. C’est à ce moment-là que vous voyez le message d’avertissement. Ce retard se produit généralement parce que certains services, tels que les gestionnaires de réseau, les conteneurs, les sessions utilisateur ou les lecteurs montés en réseau, ont besoin de plus de temps pour fermer les connexions ou enregistrer les données en toute sécurité.

De nombreux utilisateurs de Linux recherchent des correctifs lorsqu’ils voient le message « Un travail d’arrêt est en cours d’exécution », en supposant que quelque chose est cassé. La vérité est que les développeurs de Systemd ont délibérément créé ce comportement. Fondamentalement, c’est le délai d’attente, généralement 90 secondes, que Systemd accorde aux services pour terminer leurs tâches en attente. Si un service ne se termine pas dans le délai configuré, Systemd le termine de force en utilisant SIGTUER et continue le processus d’arrêt.

Avec cet arrêt progressif, de nombreuses applications terminent ce qu’elles font, comme fermer des fichiers, terminer des transactions de base de données et démonter proprement les systèmes de fichiers. Vous pouvez toujours supprimer l’attente et accélérer les arrêts, mais cela augmente également le risque de perdre des écritures ou des transactions récentes, de corrompre les bases de données ou les fichiers journaux, ou de laisser les lecteurs montés dans un état instable.

Réduire le délai d’expiration par défaut

L’attente par défaut de 90 secondes constitue un équilibre pour de nombreux utilisateurs de Linux, en particulier ceux qui utilisent du matériel plus ancien, car elle est suffisamment longue pour que la plupart des services terminent leurs routines de nettoyage. Cependant, pour les utilisateurs d’ordinateurs portables ou de systèmes de bureau modernes, 90 secondes peuvent sembler excessives.

Quelle que soit la raison, vous pouvez modifier le fichier de configuration du système et réduire le délai d’attente en demandant à systemd d’accorder aux services inachevés un nombre spécifique de secondes pour terminer leurs tâches.

Pour commencer, lancez votre terminal et utilisez votre éditeur de texte préféré pour modifier le fichier de configuration système :

sudo nano /etc/systemd/system.conf
Affichage du fichier de configuration Systemd sur le terminal

Ensuite, localisez la variable de délai d’attente. Vous verrez beaucoup de texte, qui représente les paramètres globaux de votre système. Recherchez une ligne similaire à #DefaultTimeoutStopSec=90s. Le symbole dièse au début de la ligne signifie qu’elle est commentée ou désactivée. Le système utilise actuellement sa valeur interne par défaut, qui est de 90 secondes.

Pour modifier la valeur, supprimez d’abord le symbole dièse pour activer la ligne, puis remplacez 90 secondes par une durée plus courte en fonction de vos préférences.

Avertissement: Ne définissez pas cette valeur sur 0. La définir sur 0 crée un délai d’attente infini, ce qui signifie que le système attendra indéfiniment que le processus s’arrête. C’est le contraire de ce que nous souhaitons. Une valeur moyenne (20 à 30 s) constitue un compromis pratique pour de nombreux utilisateurs.

Une fois que vous avez terminé, enregistrez et quittez l’éditeur. Pour appliquer les modifications, vous devez généralement redémarrer. Étant donné que le problème se produit lors de l’arrêt, vous constaterez peut-être une dernière fois la longue attente. Après le prochain démarrage, la nouvelle limite de secondes prendra effet.

Note: Dans certains cas, vous devrez peut-être activer le #DefaultDeviceTimeoutSec=90s aussi pour que ça marche.

Quand le délai d’attente peut indiquer un problème

Dans la plupart des cas, un délai d’attente d’arrêt d’une tâche est un comportement normal. Cependant, cela peut parfois indiquer un problème sous-jacent, surtout si le même service retarde son arrêt à plusieurs reprises. Un montage réseau peut être devenu inaccessible, un démon peut être mal configuré ou un service peut ne pas répondre correctement aux signaux d’arrêt.

Si vous remarquez des arrêts prenant quelques minutes au lieu de quelques secondes, ou si le même service expire à chaque fois, cela vaut la peine d’enquêter. Les retards occasionnels sont généralement inoffensifs, mais les retards constants suggèrent que quelque chose nécessite une attention particulière.

Pour identifier le service à l’origine du retard, vérifiez les journaux après le redémarrage après un arrêt lent :

journalctl -b -1 -e
Identification du service provoquant un retard à l'aide de Journalctl

Cette commande affiche les journaux du démarrage précédent et passe à la fin. Vous pouvez faire défiler vers le haut pour rechercher des avertissements, des messages d’expiration ou des services que le système a arrêtés de force.

De plus, vous pouvez également affiner les choses en affichant les messages de niveau d’avertissement :

journalctl -b -1 -p warning
Affichage des messages de niveau d'avertissement de Journalctl

Une autre vérification utile consiste à exécuter cette commande Systemd analyse :

systemd-analyze blame

Bien que cette commande se concentre sur les temps de démarrage, les services dont le démarrage est lent se comportent souvent de la même manière lors de l’arrêt. Certains autres services courants qui ont tendance à déclencher des messages d’arrêt de travail incluent :

  • Services réseau
  • Systèmes de fichiers distants tels que NFS ou SMB
  • Serveurs de base de données
  • Gestionnaires de conteneurs et de machines virtuelles
  • Disques externes et unités à montage automatique

Les montages basés sur le réseau sont particulièrement sujets aux retards si la connexion est instable ou n’est plus disponible. De plus, réduire le délai d’arrêt peut rendre les arrêts plus rapides, mais cela ne résout pas le problème sous-jacent. Si un service retarde systématiquement l’arrêt, s’attaquer à la cause profonde produit de meilleurs résultats à long terme.

Pensées finales

Linux vous offre un haut niveau de contrôle sur votre système, y compris combien de temps il attend l’arrêt des services tenaces. Vous pouvez également gérer les applications en arrière-plan et désactiver les services inutiles pour améliorer les temps d’arrêt et de démarrage.

Partager :
Facebook
Twitter
LinkedIn

Gentil Geek

Passionné d'informatique depuis ma plus tendre enfance aujourd'hui j'en ai fait mon métier. A vos côtés pour simplifier votre utilisation de l'informatique et vous permettre de gagner en compétences.

Poster le commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *