Lorsque vous démarrez votre système, il passe par une séquence d'événements avant de vous présenter l'écran de connexion. Avez-vous déjà vérifié combien de temps votre système prend pour démarrer ? Généralement, tout se passe en quelques secondes ou quelques minutes mais on ne connaît pas l'heure exacte. Parfois, pour certaines raisons, vous devrez peut-être trouver le temps exact de démarrage de votre système. Quelle que soit la raison pour laquelle vous souhaitez le savoir, il existe un utilitaire systemd-analyze qui peut vous indiquer le temps exact de démarrage de votre système Linux.
Bien que vous puissiez utiliser une horloge ou un chronomètre pour surveiller l'heure à laquelle votre système démarre, cela n'est pas possible dans toutes les situations, en particulier pour les serveurs en cours d'exécution que vous pouvez à peine redémarrer. Par exemple, si vous avez un serveur exécutant des services critiques et que vous devez trouver le temps de démarrage de votre système. Dans ce cas, vous devez redémarrer le serveur, ce qui ne peut pas être possible à chaque fois.
Dans cet article, vous apprendrez à déterminer le temps de démarrage de votre système Linux et comment réduire ce temps s'il démarre lentement.
Remarque :
- La procédure décrite dans cet article a été testée sur Ubuntu 20.04 LTS. La même procédure peut être effectuée dans n'importe quelle distribution Linux avec systemd activé.
- Pour ouvrir le terminal de ligne de commande, utilisez le raccourci clavier Ctrl+Alt+T.
Qu'est-ce que systemd-analyze ?
Systemd-analyze est un outil qui peut être utilisé pour connaître les dernières statistiques de démarrage du système. Avec l'outil systemd-analyze, vous pouvez trouver des informations sur le temps de démarrage du système et sur le temps de démarrage de chaque unité. Heureusement, vous n'avez pas besoin d'installer cet outil, car il s'agit d'un outil systemd intégré. Vous pouvez le vérifier en utilisant la commande suivante dans Terminal :
$ which systems-analyze
La sortie affichera le chemin complet de la commande exécutable.
Trouver le temps que le système prend pour démarrer
Afin de trouver le temps que le système prend pour démarrer, tapez simplement system-analyze sans aucun argument de ligne de commande dans le Terminal :
$ systemd-analyze
Lorsque vous exécutez la commande ci-dessus, l'outil systemd-analyze calcule le temps pris par le système jusqu'à ce que le démarrage soit terminé, décomposé en noyau et en espace utilisateur.
Comme vous pouvez le voir dans la capture d'écran ci-dessus, le temps de démarrage total de notre système est de 32,378 s. secondes et se décompose en :
- Noyau :6.074s
- Espace utilisateur :26.304s
Enquêter/résoudre les problèmes de démarrage lent
Si le temps de démarrage est plus long, vous devez trouver quel service ralentit le processus de démarrage. Vous pouvez le trouver en utilisant le blâme systemd-analyze commande. Cette commande répertorie tous les services en cours d'exécution qui ont démarré au moment du démarrage, ainsi que le temps qu'ils ont pris. Avec ces informations, vous pouvez optimiser le temps de démarrage du système.
Exécutez la commande suivante dans Terminal afin de trouver le service à blâmer pour le processus de démarrage lent :
$ sudo systemd-analyze blame
Cette commande répertorie les services démarrés au moment du démarrage, ainsi que le temps nécessaire à chaque service pour s'initialiser. La liste est triée par temps écoulé dans l'ordre décroissant.
La liste des reproches peut être assez longue, généralement, les 10 premières entrées suffisent pour trouver les services très chronophages. Par conséquent, dirigez la sortie de la commande ci-dessus vers la commande "head" comme suit :
$ sudo systemd-analyze blame | head
Vous pouvez également imprimer la sortie sous la forme d'un arbre de la chaîne d'événements critiques dans le temps. Exécutez la commande suivante dans Terminal pour ce faire :
$ systemd-analyze critical-chain
Dans la sortie, vous verrez une chaîne d'événements triés par heure (lorsque le service est devenu actif) dans l'ordre décroissant. La valeur après le caractère "@" dans chaque événement est l'heure à laquelle le service est devenu actif. Alors que la valeur après le caractère "+" dans chaque unité indique le temps que le service a mis pour démarrer.
À partir de la sortie que vous avez reçue des commandes ci-dessus, vous pouvez facilement savoir quel service prend plus de temps à démarrer et en retour, votre système démarre lentement. Commencez par le haut et désactivez les services qui ont mis plus de temps à démarrer tant qu'ils ne sont pas obligés de démarrer au démarrage. De plus, désactivez tous les services qui prennent moins de temps mais ne sont pas nécessaires au démarrage car ils affectent également le temps de démarrage du système.
Pour désactiver n'importe quel service, utilisez la syntaxe suivante :
$ sudo systemctl disable service-name
C'est tout ce qu'il y a à faire ! Dans cet article, vous avez appris à utiliser l'outil intégré systemd pour connaître le temps de démarrage de votre système. Si le démarrage prend plus de temps, vous pouvez également trouver les services qui en sont responsables et les désactiver pour améliorer le temps de démarrage. Cependant, notez que certains services par défaut sont requis pour démarrer au démarrage, il n'est donc pas recommandé de désactiver un service sans savoir ce qu'il fait réellement, sinon vous pourriez avoir des ennuis.