Quand votre serveur Linux commence à faire des siennes à 3 h du matin, vous avez besoin de réponses rapides.
C’est là que la commande journalctl --since
entre en scène : l’équivalent d’une machine à remonter le temps pour les événements de votre système.
Qu’est-ce que « journalctl last » ?
« journalctl last » n’est pas une commande à part entière ; c’est une manière d’utiliser journalctl
avec des filtres temporels pour afficher les entrées de journal les plus récentes.
C’est particulièrement utile lorsque vous avez besoin de vérifier ce qui s’est passé juste avant qu’un problème ne survienne. Considérez journalctl
comme un enregistrement des événements du système, et cette approche comme un moyen de consulter rapidement les moments qui ont précédé un crash ou une erreur.
Voici la syntaxe de base à laquelle la plupart des administrateurs système font référence lorsqu’ils parlent de « journalctl last » :
journalctl --since="1 hour ago"
Cette commande récupère toutes les entrées du journal système de la dernière heure—parfait lorsque vous dépannez un problème récent.
Voici donc 8 commandes journalctl à garder proches !
1. Voir en temps réel les fichiers journaux
journalctl -f
Ceci affiche les logs combinés en temps réel, idéalement pour voir ce qui se passe en direct
2. Voir uniquement le démarrage le plus récent
journalctl -b -0
Ceci affiche les logs de votre démarrage actuel uniquement. Votre système pourrait être en marche depuis des mois, mais vous ne verrez que ce qui s’est passé depuis le dernier redémarrage.
3. Afficher les logs d’une fenêtre de temps spécifique
journalctl --since="2023-10-15 14:30:00" --until="2023-10-15 15:00:00"
Parfait quand un utilisateur dit : « Tout a planté vers 14h45. » Maintenant vous pouvez voir exactement ce qui s’est passé dans cette période.
4. Vérifier ce qui s’est passé dans les dernières minutes avant un crash
journalctl --since="10 minutes ago" | grep -i error
Cette combinaison vous montre les erreurs récentes juste avant que tout parte en vrille.
5. Obtenir les 100 dernières lignes d’entrées du journal
journalctl -n 100
Cette commande affiche exactement 100 des entrées de log les plus récentes, peu importe l’heure. Parfait pour un aperçu rapide de ce qui s’est passé sur votre système. Vous pouvez ajuster le nombre pour afficher plus ou moins de lignes.
Vous pouvez aussi la combiner avec d’autres filtres :
journalctl -u nginx.service -n 100 # 100 dernières lignes de nginx seulement
journalctl -p err -n 100 # 100 derniers messages d'erreur
Cette approche est beaucoup plus rapide que le filtrage basé sur le temps quand vous avez juste besoin d’un coup d’œil rapide sur l’activité récente.
6. Surveiller les erreurs en temps réel au fur et à mesure qu’elles se produisent
journalctl -f -p err
Comme vue plus haut, le flag -f
suit le log comme tail -f
, -p seulement les erreurs.
6. Découvrir ce qu’un service spécifique a fait
journalctl -u nginx.service --since today
Remplacez nginx.service
par ce qui vous pose problème. Ceci vous montre tout ce que ce service a enregistré depuis minuit.
7. Voir qui s’est connecté récemment avec SSH
journalctl _COMM=sshd --since="24 hours ago"
Parfait pour vérifier une activité de connexion inhabituelle quand vous soupçonnez quelque chose de louche.
8. Vérifier ce qui s’est passé pendant le dernier redémarrage
journalctl --since="$(date -d '1 hour ago')" -g "starting|stopping|Started|Stopped"
Ceci montre les démarrages et arrêts de services dans la dernière heure—parfait pour voir ce qui a changé pendant un déploiement ou une mise à jour récente.
5 trucs de formatage journalctl
pour rendre vos logs lisibles
La sortie par défaut de journalctl
est… fonctionnelle, mais on ne peut pas dire qu’elle brille par sa clarté. Voici cinq options de formatage qui les rendent plus intéressant :
1. Une sortie en couleur et bien structurée
journalctl --since="1 hour ago" -o json-pretty
Affiche les journaux en JSON coloré et indenté. Parfait pour repérer rapidement les champs importants.
2. Juste le message, rien de plus,
journalctl --since="1 hour ago" -o cat
Supprime les horodatages et les métadonnées pour ne garder que le message brut du journal.
3. Des horodatages ultra-précis
journalctl --since="1 hour ago" --output=short-precise
Affiche les horodatages avec précision à la microseconde, idéal pour analyser la séquence exacte d’événements.
4. Exporter les logs pour une analyse externe
journalctl --since="1 day ago" -u web-app.service -o json > webapp-logs.json
Enregistre les journaux dans un fichier JSON, prêt à être analysé avec d’autres outils ou partagé avec l’équipe de développement.
5. Format multi-ligne complet
journalctl --since="1 hour ago" -o verbose
Affiche tous les champs de chaque entrée sur plusieurs lignes. Idéal pour explorer les métadonnées cachées.
Comment filtrer les résultats de journalctl
Obtenir tous les journaux de la dernière heure est un bon début, mais la véritable compétence consiste à filtrer le bruit. Voici comment se concentrer sur ce qui compte :
Type de filtre | Exemple de commande | Ce que cela fait |
---|---|---|
Par service | journalctl -u apache2 --since="30 minutes ago" | Seuls les journaux Apache des 30 dernières minutes |
Par priorité | journalctl -p err --since today | Seuls les journaux de niveau erreur et plus élevé d’aujourd’hui |
Par utilisateur | journalctl _UID=1000 --since yesterday | Seuls les journaux de l’UID 1000 depuis hier |
Par ID de processus | journalctl _PID=1234 --since="1 hour ago" | Journaux du PID 1234 dans la dernière heure |
Par journaux du noyau | journalctl -k --since="20 minutes ago" | Seuls les journaux du noyau des 20 dernières minutes |
Par hôte | journalctl -D /var/log/journal/remote/ | Journaux provenant d’hôtes distants |
Considérations de performance
Quand votre journal atteint plusieurs gigaoctets, certaines requêtes deviennent lentes. Ces conseils permettent de garder les choses rapides :
1. Nettoyer régulièrement les anciens journaux
journalctl --vacuum-time=2weeks
Ceci supprime les journaux plus anciens que deux semaines, gardant vos requêtes rapides.
2. Utiliser le paramètre du répertoire de journal
Au lieu de scanner tout, pointez directement vers l’emplacement des journaux récherchés :
journalctl -D /var/log/journal/specific-machine/
3. Limiter la taille de sortie
journalctl --since="1 day ago" -n 1000
Ceci affiche seulement les 1000 entrées correspondantes les plus récentes, évitant la surcharge du terminal.
4. Indexer vos journaux Si vous utilisez une version récente de systemd :
journalctl --verify --file=/var/log/journal/*/system.journal
Vérifiez et reconstruisez les index de journal pour des recherches plus rapides.