- Journalctl centralise et filtre les journaux systemd par heure, unité, priorité, etc.
- Permet des sorties flexibles (JSON, ISO 8601, verbeux) et un suivi en temps réel.
- Gestion de l'espace avec vide et limites dans journald.conf pour un contrôle précis.

quand tu travailles avec Linux moderne, systemd et son journal centralisé Ils constituent le cœur de métier pour comprendre ce qui se passe sur la machine. C'est là qu'intervient journalctl, véritable couteau suisse pour interroger, filtrer et exporter ces journaux avec une rapidité et une précision que vous n'obtiendrez pas avec des fichiers plats dispersés.
Ce tutoriel rassemble, étape par étape, Toutes les fonctionnalités essentielles et avancées de journalctl: depuis que j'ai vu le dernier BotteFiltrez par service, utilisateur ou priorité, pour gérer l'espace disque, modifier les formats de sortie ou exporter au format JSON. Vous découvrirez également comment activer l'option stockage persistant, répertorier les démarrages précédents et se déplacer dans les fenêtres temporelles avec une flexibilité absolue.
Journalctl, systemd-journald et pourquoi c'est important
Sur les systèmes avec systemd, les messages du noyau, des services, d'initrd et des processus utilisateur sont collectés dans un journal binaire géré par systemd-journal. Contrairement à /var/log/syslog et similaires, ce format binaire permet Recherches rapides, filtrage des métadonnées et sorties polyvalentes (par exemple, style JSON ou syslog), le tout à partir d'un seul point d'accès : journalctl.
Tout d’abord : vérifiez le fuseau horaire
Étant donné que les enregistrements sont affichés par défaut en heure locale, il est conseillé de valider d'abord le fuseau horaire avec timedatectl. Vous pouvez lister les zones disponibles avec timedatectl list-timezones et le changer avec sudo timedatectl set-timezone ZONA. Pour vérifier l'état, USA timedatectl status et confirme que l'horloge locale est correcte.
Si vous êtes intéressé à travailler chez UTC, journalctl ajoute le modificateur -UTC Pour afficher les horodatages universels lorsque vous en avez besoin. Ainsi, la comparaison avec les journaux est simplifiée. autres serveurs ou avec des données de surveillance.
Mise en route : affichage, navigation et pagination
Sans arguments, journalctl affiche l'intégralité du journal depuis l'entrée la plus ancienne jusqu'à la plus récente en utilisant une pagination (généralement moins). Vous pouvez faire défiler avec les flèches et, si la ligne est plus longue que l'écran, voir le reste avec la flèche droite. Pour inverser l'ordre (le plus récent en premier), ajoutez -r.
Si vous souhaitez que la ligne soit tronquée au lieu d'être décalée latéralement, utilisez --no-full; et de voir absolument tout (y compris caractères non imprimables), ajoute -a. Lorsque vous souhaitez traiter la sortie avec d’autres outils, --no-pager désactive le pager et laisse la sortie dans Stdout.
Il existe des raccourcis plus pratiques pour la vie quotidienne : -e passez directement à la fin du journal pour voir les derniers événements et -x intenta ajouter des explications utile à certains messages (lorsqu'ils sont disponibles) pour accélérer le diagnostic.
Filtrer par démarrage du système
L'interrupteur -b Il vous montre uniquement les entrées du démarrage actuelVous verrez des lignes « – Reboot – » délimitant les sessions si vous naviguez entre plusieurs démarrages. Pour revenir à un démarrage précédent, utilisez journalctl -b -1; depuis cinq départs, -b -5. Ceci est idéal lorsqu'un problème survient uniquement après un redémarrage ou dans des séquences de démarrage spécifiques.
Si vous voulez la liste des départs que le journal connaît, journalctl --list-boots affichera un par ligne avec : décalage relatif (0, -1, -2, …), ID_DE_BOOT et plage horaire. Vous pouvez effectuer une requête par décalage ou par identifiant absolu : journalctl -b 0 o journalctl -b BOOT_ID.
Important : pour que les démarrages précédents persistent après les redémarrages, activez le stockage persistant en créant /var/log/journal (sudo mkdir -p /var/log/journal) ou l'édition /etc/systemd/journald.conf avec Storage=persistentDe cette façon, les journaux ne seront pas perdus à chaque démarrage.
Fenêtres temporelles puissantes
Pour limiter dans le temps, utilisez --since y --until avec le format AAAA-MM-JJ HH: MM: SSSi vous omettez l'heure, minuit est supposé ; si vous omettez la date, le jour actuel est supposé. Par exemple : journalctl --since "2024-12-01 09:00" --until "2024-12-01 12:00".
Vous pouvez également utiliser des expressions relatives : hier, aujourd'hui, demain, maintenant, ou des phrases comme "1 hour ago". Un classique : journalctl --since 09:00 --until "1 hour ago" à visualiser de la première heure jusqu'à l'heure précédant celle en cours.
Filtrer par service, processus, utilisateurs et plus
Le filtre le plus courant est par unité systemd : -u. Par exemple, journalctl -u nginx.service Affiche l'intégralité du service Nginx. Vous pouvez combiner plusieurs unités pour visualiser leurs interactions. intercalés chronologiquement entrées provenant, par exemple, de Nginx et PHP-FPM : journalctl -u nginx.service -u php-fpm.service --since today.
Pour exécuter ou non des services, vous pouvez répertorier les unités avec systemctl list-units -t service --all et découvrez noms exacts (utile dans les systèmes comportant des dizaines de services). Cela permet d'éviter les fautes de frappe et de filtrer uniquement ce qui est nécessaire.
Si vous connaissez le PID, filtrez par _PID: journalctl _PID=8088Pour les utilisateurs et les groupes, utilisez _UID y _GID: Par exemple, id -u www-data renverra l'UID que vous pourrez ensuite utiliser dans journalctl _UID=33 --since today pour voir ce qui a été généré par cet utilisateur.
Le journal indexe automatiquement de nombreux champs : exécutable, commande, transport, installation, etc. Avec journalctl -F CAMPO vous pouvez lister les différentes valeurs d'un champ et ainsi créer des filtres plus précis. Consultez man systemd.journal-fields pour voir le catalogue complet des champs filtrables.
Quelques filtres très pratiques : par chemin exécutable (journalctl /usr/bin/bash), par une fonction de style syslog (SYSLOG_FACILITY=3 correspond au démon), par ID de démarrage (_BOOT_ID=...) ou par transport (_TRANSPORT=kernel|stdout|journal|syslog|driver|audit) selon l'origine du message.
Vous pouvez même filtrer par appareil dans certains cas, par exemple pour Détecter les événements USB sous Linux ou avec journalctl /dev/sda, utile pour localiser les messages liés à stockage lorsqu'il y a des soupçons d'E/S ou de secteurs défectueux.
Messages du noyau et équivalents dmesg
Pour voir uniquement les messages du noyau, vous devez -k o --dmesg. Par défaut, ils sont limités au démarrage actuel, mais vous pouvez les combiner avec -b pour les autres bottes : journalctl -k -b -5 affichera le noyau d'il y a cinq démarrages.
Ce filtre est très utile pour détecter conflits de conducteurs, problèmes de matériel o Panique du noyau ou des événements de bas niveau qui n'apparaissent pas dans les services utilisateurs. C'est l'alternative moderne à l'ancienne commande dmesg avec contexte temporel et métadonnées.
Priorités des journaux : 0 à 7 ou par nom
Journalctl reconnaît les niveaux de priorité standard : 0 urgence, 1 alerte, 2 critique, 3 erreur, 4 avertissement, 5 avis, 6 information, 7 débogage. Vous pouvez filtrer avec -p en utilisant le nom ou le numéro, et inclut par défaut le niveau choisi et tous les plus sévères.
Exemples: journalctl -p err -b (erreur et le plus élevé dans le démarrage actuel) ou journalctl -p 3. Si vous souhaitez affiner une recherche portée exacte, utilisez le format desde..hasta:par exemple, uniquement avertissement, erreur et critique avec journalctl -p warning..crit ou en chiffres journalctl -p 4..2.
Suivez en temps réel, les dernières lignes et recherches
Pour « écouter » le journal en direct, -f ça marche pareil que queue -fIdéal lorsque vous redémarrez un service et souhaitez voir immédiatement ce qu'il génère. Si vous préférez un échantillonnage, -n afficher les N dernières lignes (par défaut 10) : journalctl -n, journalctl -n 20 o journalctl -n12 sous sa forme compacte.
En plus du pipe toujours utile vers grep, journalctl intègre --grep pour les expressions régulières directement dans la requête. Par exemple, pour localiser les entrées contenant GnuPG: journalctl --grep GnuPG. Combinée au temps, à la motivation ou à la priorité, la recherche est chirurgical.
Formats de sortie et d'exportation
Avec -o vous modifiez le format de sortie. Vous avez short (style syslog par défaut), short-iso (horodatage ISO 8601), short-monotonic (marque monotone), short-precise (microsecondes) et verbeux (affiche tous les champs, y compris les champs internes).
Pour les intégrations, json y json-pretty sont idéales (ces dernières sont plus lisibles par l'homme), et json-sse encapsule la sortie pour événements envoyés par le serveur. Le format cat imprimer uniquement le champ MESSAGE, utile pour des lectures propres, et export Il est utilisé pour transférer ou enregistrements de sauvegarde en binaire.
Si vous devez traiter avec d’autres outils, pensez à combiner --no-pager et redirige : journalctl -b -u nginx -o json --no-pager > nginx.json ou simplement journalctl > mensajes.log quand vous avez besoin d'un vidage rapide.
Permis et sécurité
De par sa conception, chaque utilisateur peut interroger leurs propres disquesPour voir le système, vous devez être racine ou appartiennent à des groupes tels que adm, wheel o systemd-journalCela évite les fuites d'informations sensibles et respecte le principe de confidentialité. moindre privilège.
Contrôle de l'utilisation du disque
Pour mesurer l’espace occupé par le journal : journalctl --disk-usage. Vous verrez un résumé des MiB/Gio consommés par les fichiers journaux dans le stockage persistant et volatil, quelque chose d'essentiel à éviter les frayeurs en petites partitions.
Si vous avez besoin de réduire ou libérer de l'espace sous LinuxVous disposez de trois stratégies de vidage : par taille, par durée et par nombre de fichiers. Exemples : sudo journalctl --vacuum-size=1G, sudo journalctl --vacuum-time=2weeks o sudo journalctl --vacuum-files=10 préserver autant que possible 10 fichiers archivés.
Pour définir des limites permanentes, modifiez /etc/systemd/journald.confLes touches les plus utiles : SystemMaxUse= y RuntimeMaxUse= (limite totale sur les persistants et les volatils), SystemKeepFree= y RuntimeKeepFree= (espace à réserver dans le FS), SystemMaxFileSize= y RuntimeMaxFileSize= (taille de fichier individuelle) et SystemMaxFiles= y RuntimeMaxFiles= (nombre maximal de fichiers archivés). Les tailles acceptent les suffixes K, M, G, T, P, E.
Gardez à l'esprit que les limites de taille de fichier guident la rotation pour atteindre la valeur marquée et que, par défaut, si vous ne configurez rien, le journal s'arrête généralement. autolimitation à environ 10 % du système de fichiers où il réside. Après avoir modifié la configuration, redémarrez le service avec sudo systemctl restart systemd-journald.
Recettes et astuces rapides
Pour voir uniquement les erreurs les plus graves du dernier démarrage : journalctl -p err -b. Si vous voulez exactement un avertissement, une erreur et un critique : journalctl -p warning..crit o journalctl -p 4..2 pour l'exprimer en chiffres.
Lister toutes les valeurs d'un champ et affiner les filtres : journalctl -F _GID (o -F _UID, -F _EXE, etc.). C'est parfait pour découvrir de véritables identifiants avant de créer votre requête finale.
Séparer par exécutable ou commande : journalctl _EXE=/usr/bin/sudo o journalctl _COMM=sudo. Si vous devez isoler ce qui provient de la sortie des services standard, filtrez par _TRANSPORT=stdout.
Filtrer par hôte dans les environnements de nom d'hôte partagé : journalctl _HOSTNAME=debian. Et pour demander des tickets à un utilisateur spécifique connaissant son UID : journalctl _UID=0 (racine) ou le numéro qui correspond à votre cas.
Avez-vous besoin de voir uniquement les messages de niveau « utilisateur » du journal système de l’installation ? journalctl SYSLOG_FACILITY=1 (et rappelez-vous que 3 correspond à démon). Ces filtres vous aident à émuler les vues syslog classiques lors de la migration vers systemd.
Fonctionne en UTC, ISO 8601 et précision à la microseconde
Si vous avez des systèmes dans plusieurs zones ou comparez avec des métriques, ajoutez --utc pour normaliser le temps. Pour des formats clairs et ordonnés, -o short-iso C'est un excellent choix ; si vous êtes intéressé par le tri d'horloge monotone (pour déboguer des séquences relatives), -o short-monotonic est ton ami.
Lorsqu'un incident nécessite une granularité maximale, -o short-precise ajoute des microsecondes à l'horodatage. C'est un atout précieux pour la corrélation avec les traces, les profils ou captures de réseau.
Bonnes pratiques d'usage quotidien
Activez la persistance si vous vous souciez de l'historique : créer /var/log/journal ou configurer Storage=persistent et redémarrez journald. Si vous travaillez avec beaucoup de rotation, définissez SystemMaxUse y SystemKeepFree pour qu'elle ne noie jamais la cloison.
Pour déboguer les services, combinez : -u servicio + -f + filtres de prioridad et le temps. Ajouter -x lorsque vous suspectez des messages cryptiques ; parfois, cela fournit des indices supplémentaires qui vous sauvent minutes précieuses.
Dans les pipelines et les exportations, utiliser --no-pager et des formats tels que json o export selon l'outil cible. N'oubliez pas la sécurité : limitez l'accès aux groupes appropriés et vérifier les autorisations si vous partagez des sorties pouvant contenir des données sensibles.
La maîtrise de journalctl change la façon dont vous comprenez le système : avec des filtres par unité, PID, utilisateur, priorité ou temps, avec des sorties riches et un contrôle de l'utilisation du disque, Vous aurez toujours l'histoire précise à portée de main de ce qui se passe. C'est un outil performant pour surveiller, auditer et déboguer intelligemment, sans se perdre dans des milliers de lignes.
Écrivain passionné par le monde des octets et de la technologie en général. J'aime partager mes connaissances à travers l'écriture, et c'est ce que je vais faire dans ce blog, vous montrer toutes les choses les plus intéressantes sur les gadgets, les logiciels, le matériel, les tendances technologiques et plus encore. Mon objectif est de vous aider à naviguer dans le monde numérique de manière simple et divertissante.
