Recherche de site Web

Comment résoudre les problèmes de démarrage d’une application Linux à l’aide de la commande journalctl


Dans les rares cas où vous constatez qu'une application ou un service Linux ne démarre pas correctement, il existe une commande pratique prête à vous aider à résoudre le problème.

Quelque chose ne va jamais avec Linux, mais cela ne signifie pas que le système d'exploitation est à l'abri des problèmes. De temps en temps, j'installe un nouveau service ou une nouvelle application, puis je vais le démarrer avec la commande :

sudo systemctl start NOM

où NOM est le nom de l’application ou du service.

Il y a eu des cas où le service refuse de démarrer ou de fonctionner correctement. Lorsque cela se produit, vers qui vous tournez-vous ? Vous pouvez toujours vérifier les fichiers journaux (généralement le meilleur endroit pour commencer) ou vous tourner vers une autre commande qui est un compagnon de systemctl. Cette commande est journalctl.

La commande journalctl interroge le journal systemd et répertorie le contenu d'un journal qui peut inclure des informations sur les raisons pour lesquelles une application ou un service particulier ne fonctionne pas correctement. Souvent, lorsque vous essayez de démarrer un service avec systemctl, si le service ne démarre pas correctement (ou pas du tout), vous verrez une suggestion dans la sortie d'utiliser la commande journalctl pour savoir ce qui s'est passé.

Laissez-moi vous montrer comment utiliser cette commande, afin que vous n'ayez pas à ignorer pourquoi les choses ne se passent pas comme prévu.

Comment utiliser journalctl

Ce dont vous aurez besoin :La seule chose dont vous aurez besoin pour cette tâche est une distribution Linux qui utilise systemd, qui est la plupart des principales distributions.

1. Utilisation de base

La première chose que vous devriez essayer est d’exécuter journalctl sans aucune option, ce qui est simple :

JournalCTL

Ce que vous verrez est la sortie complète du journal systemd. À partir de ce résultat, vous pouvez trouver des informations pour vous aider à résoudre votre problème.

Lorsque j’ai exécuté la commande, il n’y avait que 41 lignes de sortie. J'ai vu des cas où il y avait des centaines de lignes dans la sortie, ce qui rendait l'utilisation de la commande sans arguments ni options un peu inutile.

Heureusement, vous pouvez filtrer une grande partie de ce bruit.

2. Vérification d’un service spécifique

Par exemple, SSH a des problèmes de démarrage. Pour résoudre ce problème, vous pouvez exécuter la commande :

systemctl -u ssh

Dans ce cas, -u signifie unité, ou une unité systemd spécifique (pensez « service »).

Le résultat de la commande ci-dessus pourrait ressembler à ceci :

Jan 12 09:55:42 pop-os systemd[1]: Starting OpenBSD Secure Shell server...
Jan 12 09:55:42 pop-os sshd[3424]: Server listening on 0.0.0.0 port 22.
Jan 12 09:55:42 pop-os sshd[3424]: Server listening on :: port 22.
Jan 12 09:55:42 pop-os systemd[1]: Started OpenBSD Secure Shell server.
Jan 15 09:39:26 pop-os sshd[659190]: Invalid user jackwallen from 192.168.1.77 port 55040
Jan 15 09:39:29 pop-os sshd[659190]: pam_unix(sshd:auth): check pass; user unknown
Jan 15 09:39:29 pop-os sshd[659190]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=192.168.1.77
Jan 15 09:39:31 pop-os sshd[659190]: Failed password for invalid user jackwallen from 192.168.1.77 port 55040 ssh2
Jan 15 09:39:33 pop-os sshd[659190]: Connection closed by invalid user jackwallen 192.168.1.77 port 55040 [preauth]
Jan 15 09:39:39 pop-os sshd[659232]: Accepted password for jack from 192.168.1.77 port 55049 ssh2
Jan 15 09:39:39 pop-os sshd[659232]: pam_unix(sshd:session): session opened for user jack(uid=1000) by (uid=0)

Comme vous pouvez le voir, dans mon cas, SSH fonctionne comme prévu, mais il y a eu une tentative de connexion infructueuse (c’est parce que j’ai oublié d’ajouter un nom d’utilisateur valide lors de la connexion depuis mon iMac).

3. Suivi de la sortie

Il existe une façon encore meilleure de dépanner un service avec journalctl. Supposons que SSH fonctionne mais qu'il a du mal à accepter les connexions (ou à peu près tout autre problème qui pourrait survenir). Vous pouvez « suivre » la sortie (qui imprime des informations en temps réel au fur et à mesure), comme ceci :

journalTCL -xefu ssh

Cette commande vous indiquera non seulement l’état de démarrage et d’exécution du service, mais répertoriera également les entrées les plus récentes enregistrées dans le journal de ce service. Pour fermer, utilisez le raccourci clavier Ctrl+c. Pour ceux qui veulent savoir, voici une explication des options :

  • x - ajouter une explication aux lignes de journal à partir du catalogue de messages
  • e - Sautez immédiatement à la fin du journal à l’intérieur de l’outil de pager implicite
  • f - follow (imprime en permanence les nouvelles entrées au fur et à mesure qu’elles sont enregistrées)
  • u - unité (comme expliqué ci-dessus)

4. Affichage d’une plage horaire

Il est également possible d'afficher une plage horaire spécifique avec journalctl. Supposons que vous souhaitiez afficher uniquement les entrées enregistrées à partir du 20 janvier à 10h00. L’ordre serait :

journalctl --depuis « 2025-01-20 10:00:00 »

Vous verriez chaque entrée enregistrée de 10h00 à l’heure actuelle.

Vous pourriez rendre cette gamme encore plus précise. Supposons que vous souhaitiez afficher les entrées enregistrées de 10h00 à 10h10. La commande serait :

journalctl --depuis « 2025-01-20 10:00:00 » --jusqu’à « 2025-01-20 10:05:00 »

Et c’est ainsi, mes amis, que vous pouvez utiliser journalctl pour résoudre les problèmes de démarrage d’applications sous Linux.

Articles connexes