Comment résoudre les problèmes de démarrage d’une application Linux avec la commande journalctl
Dans les rares occasions 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 pas rarement 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 le démarre 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 a refusé 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 pourrait 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 à savoir 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 distributions majeures.
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, c’est la sortie complète de la revue systemd. À partir de cette sortie, vous pourriez trouver de l’information 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 de la difficulté à démarrer. 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 »).
La sortie 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 infructueuse de connexion (c’est-à-dire parce que j’ai oublié d’ajouter un nom d’utilisateur valide lors de la connexion à partir de mon iMac).
3. Talonnage de la sortie
Il existe une meilleure façon de dépanner un service avec journalctl. Disons que SSH est en cours d'exécution mais qu'il a de la difficulté à accepter les connexions (ou à peu près tout autre problème qui pourrait survenir). Vous pouvez « suivre » la sortie (qui imprime l’information en temps réel au fur et à mesure), comme suit :
journaltcl -xefu ssh
Cette commande vous indiquera non seulement l’état de démarrage et d’exécution du service, mais répertoriera les entrées les plus récentes enregistrées dans le journal pour ce service. Pour fermer, utilisez le raccourci clavier Ctrl+c. Pour ceux qui veulent le savoir, voici une explication des options :
- x - ajouter une explication aux lignes de journal du catalogue de messages
- E - Passer immédiatement à la fin du journal à l’intérieur de l’outil de téléavertisseur implicite
- f - suivre (imprimer continuellement les nouvelles entrées au fur et à mesure qu’elles sont enregistrées)
- u - unité (comme expliqué ci-dessus)
4. Visualisation d’une plage de temps
Il est également possible de visualiser une plage de temps spécifique avec journalctl. Supposons que vous ne vouliez voir que les entrées enregistrées à partir du 20 janvier à 10h00. L’ordre serait :
journalctl --depuis « 2025-01-20 10:00:00 »
Vous verrez toutes les entrées enregistrées de 10h00 à l’heure actuelle.
Vous pourriez rendre cette fourchette encore plus précise. Supposons que vous souhaitiez voir les entrées enregistrées de 10 h 00 à 10 h 10. Le commandement serait le suivant :
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 sur Linux.
