GNU/Linux >> Tutoriels Linux >  >> Linux

Journalctl :comment lire et modifier les journaux Systemd

Présentation

Systemd enregistre tous les messages Linux à partir des processus du noyau et du système. La commande journalctl permet d'afficher et de modifier les journaux systemd, ce qui en fait un outil puissant pour le débogage des services et des processus.

Ce guide montre comment lire, contrôler et gérer les journaux systemd à l'aide de journalctl à travers des exemples.

Prérequis

  • Accès à la ligne de commande/fenêtre du terminal.
  • Un éditeur de texte (tel que nano) pour modifier le fichier de configuration.
  • Un utilisateur avec des privilèges sudo (voir comment ajouter un utilisateur aux sudoers).

Qu'est-ce que Systemd ?

Systemd est un service Linux et un gestionnaire de système. Bien que les utilisateurs n'invoquent pas directement systemd, le gestionnaire contient de nombreux outils et démons à exécuter individuellement pour divers processus système.

L'une des fonctionnalités les plus puissantes de systemd est la fonction de journalisation. Systemd fournit une solution centralisée pour enregistrer tous les processus du noyau et des utilisateurs via des journaux appelés journaux .

Le journal Le démon collecte tous les messages générés par le système, puis crée des journaux, quel que soit le programme ou le processus. Le démon rassemble les données de toutes les ressources système disponibles et les stocke dans un format binaire.

Remarque : Le format binaire permet de manipuler la sortie en fonction de vos besoins, offrant plus de flexibilité que les fichiers journaux Linux traditionnels.

syntaxe journalctl

Le journalctl la commande interroge et manipule les données du journal collectées par le journal démon. L'outil est vital pour les administrateurs système et complète d'autres outils de journalisation Linux et des solutions logicielles de serveur Syslog.

La syntaxe de la commande est :

journalctl <options> <matches>

Sans aucun paramètre, le journalctl La commande génère l'intégralité du contenu du journal à partir de l'entrée la plus ancienne. Le <match> est un ou plusieurs arguments séparés par des espaces pour filtrer les champs de sortie. Le format est "FIELD=VALUE" .

Options journalctl

Le tableau ci-dessous résume les journalctl courants option :

Option Description
-a
--all
Afficher tous les champs entièrement, y compris les caractères non imprimables.
-f
--follow
Affiche les entrées les plus récentes et en imprime de nouvelles en permanence.
--no-full Tronque la sortie.
-e
--pager-end
Saute à la fin du téléavertisseur.
-n <number>
--lines=<number>
Affiche les entrées les plus récentes limitées à <number> d'événements. Sans argument, la valeur par défaut est dix (10).
-o <format>
--output=<format>
Affiche les entrées de journal dans le <format> demandé .
--utc Affiche l'heure au format UTC (Coordinated Universal Time).
-x
--catalog
Ajoute un texte d'explication au message de journal lorsqu'il est disponible.
-q
--quiet
Supprime les messages informatifs dans la sortie.
-b [<ID> or <+-offset>]
--boot[=<ID> or <+-offset>]
Affiche les journaux d'un démarrage spécifique. L'omission de l'argument affiche les journaux de démarrage actuels.
-k
--dmesg
Affiche uniquement les messages du noyau.
--list-boots Affiche un tableau des numéros de démarrage et de leurs identifiants.
-g <regex>
--grep=<regex>
Filtre la sortie selon la syntaxe grep regex.
-S <date> , -U <date>
--since=<date> , --until=<date>
Affiche les entrées plus récentes ou plus anciennes que la date spécifiée.
-u <unit|pattern>
--unit=<unit|pattern>
Afficher les journaux pour l'unité systemd spécifiée ou toute unité correspondant au <pattern> .
--disk-usage Calcule et affiche la taille totale du journal sur le disque.
--vaccuum-size=<size> Limite la taille du fichier journal archivé à .
--vaccuum-time=<time> Limite les journaux archivés à plus récents que
--no-pager Désactive le téléavertisseur et s'affiche comme sortie standard.

Vérifiez le journalctl page de manuel en utilisant la commande man pour une liste complète des options.

Comment lire systemd

La section suivante explique comment lire les journaux systemd et utiliser les différentes options d'affichage pour le journalctl commande. La sortie est différente pour chaque machine puisque les enregistrements de chaque système sont uniques.

Afficher toutes les entrées de journal

Pour afficher toutes les entrées de journal, utilisez le journalctl commande sans aucune option :

journalctl

La première ligne de la sortie indique la plage de temps des données du journal. Les colonnes contiennent les données suivantes dans l'ordre de gauche à droite :

  • Date et heure.
  • Hébergeur.
  • Source du journal.
  • Message de journal.

Les données du journal contiennent de nombreuses entrées. Utilisez les touches fléchées (similaire à la commande less) pour naviguer.

Quittez le journal en appuyant sur q .

Afficher les entrées les plus récentes

Le journalctl La commande affiche les entrées les plus anciennes par défaut. Pour passer à la fin du téléavertisseur et afficher les entrées les plus récentes, utilisez le -e choix :

journalctl -e

La sortie affiche les 1000 dernières entrées pour économiser de l'espace.

Pour contrôler le nombre de lignes affichées dans la sortie, utilisez le -n option suivie du nombre de lignes. Par exemple, pour afficher les cinq entrées de journal les plus récentes, utilisez :

journalctl -n 5

Le -e l'option est inutile et impliquée par le -n option. L'omission du nombre affiche les dix entrées les plus récentes par défaut.

Limiter les journaux au démarrage spécifique

Pour limiter les journaux au démarrage en cours, utilisez le -b balise sans aucun paramètre :

journalctl -b

Sans aucun paramètre, la commande affiche les journaux de démarrage actuels.

Accédez à un démarrage spécifique en ajoutant un paramètre de décalage. Par exemple, affichez les journaux de démarrage précédents avec :

journalctl -b -1

Vous pouvez également afficher le plus ancien journal de démarrage disponible avec :

journalctl -b +1

Une autre façon de voir un démarrage spécifique consiste à utiliser un ID de démarrage. Récupérez les ID de démarrage à l'aide de --list-boots avec :

journalctl --list-boots

La première colonne affiche le nombre de décalage négatif, tandis que la deuxième colonne récupère l'ID de démarrage . Copiez l'ID et ajoutez-le en tant que paramètre à la commande, par exemple :

journalctl -b cc07702b00884ec59312ece62604cac8

La sortie limite l'affichage du journal à l'instance d'ID fournie.

Afficher les journaux dans une fenêtre de temps spécifique

Filtrez le journal en spécifiant une limite de temps. Les deux options de limitation depuis ou jusqu'à une heure spécifiée sont :

journalctl -S <datetime>
journalctl -U <datetime>

Utilisez les options individuellement ou combinez-les pour créer une fenêtre de temps.

La commande attend l'un des formats de date et d'heure suivants :

  • Date et heure spécifiques, par exemple, 2022-04-30 09:20:00 . Omettre le paramètre d'heure par défaut est 00:00:00 .
  • Chaînes, telles que "yesterday" , "today" , "2 hours ago" , ou "now" .

Ci-dessous un exemple journalctl commande avec une fenêtre de temps spécifique :

journalctl -S 2022-04-02 -U 2022-04-22

La commande crée une fenêtre temporelle du 2 avril 2022 au 22 avril 2022. La sortie affiche les revues qui tombent dans cette période.

Vous pouvez également utiliser un modèle de chaîne tel que :

journalctl -S "50 minutes ago"

La sortie affiche les journaux depuis l'heure indiquée jusqu'à l'heure actuelle.

Afficher les journaux par unité systemd spécifique

Filtrez les journaux par l'unité systemd spécifique en utilisant le -u balise et en fournissant le nom de l'unité. Par exemple, pour filtrer uniquement les enregistrements d'unité de service Jenkins, exécutez :

journalctl -u jenkins

La sortie affiche les entrées de journal liées à l'unité systemd spécifique (dans ce cas, Jenkins).

Remarque : Pour afficher toutes les unités systemd actuellement actives, utilisez :

systemctl list-units

Afficher les messages du noyau

Pour afficher uniquement les messages du journal du noyau, utilisez le -k choix :

journalctl -k

La sortie affiche les messages du noyau uniquement à partir du démarrage en cours, en appliquant le -b étiquette. Pour trouver les journaux du noyau d'une autre session de démarrage, ajoutez le -b tag et recherchez une botte spécifique.

Suivre les journaux

Utilisez le -f ou --follow balise pour imprimer les journaux les plus récents en continu :

journalctl -f

La sortie imprime les journaux au fur et à mesure qu'ils sont générés en temps réel. L'option permet de surveiller les journaux avec journalctl à mesure qu'ils s'ajoutent.

Pour quitter la visionneuse, appuyez sur CTRL +C .

Filtrer les messages du journal en fonction de la priorité

Filtrez les messages du journal par priorité à l'aide de la commande suivante :

journalctl -p <number or text priority>

Les priorités suivantes existent :

  • Urgence - 0 ou emerg
  • Alerte - 1 ou alert
  • Critique :2 ou crit
  • Erreur - 3 ou err
  • Avertissement - 4 ou warning
  • Avis - 5 ou notice
  • Informer - 6 ou info
  • Débogage :7 ou debug

Un nombre inférieur indique les messages les plus prioritaires. La spécification d'une priorité à un seul niveau affiche également tous les journaux de priorité inférieure (plus critiques).

Par exemple, pour afficher des alertes, utilisez :

journalctl -p 1

Ou alternativement :

journalctl -p alert

La sortie affiche uniquement les messages au niveau de l'alerte et les plus importants (le cas échéant).

Filtrer les messages du journal en fonction d'un utilisateur spécifique

Pour voir les journaux d'un utilisateur, récupérez l'ID utilisateur (UID) avec :

id <user>

Pour récupérer l'ID de l'utilisateur actuel, omettez le <user> . La sortie affiche la valeur UID pour l'utilisateur donné. Utilisez le champ Journal UID pour filtrer les messages du journal en fonction de l'utilisateur spécifique :

journalctl _UID=<UID>

La sortie filtre le journal du journal en fonction de l'ID utilisateur spécifié.

Remarque : Pour une liste complète des champs, vérifiez le systemd.journal-fields page de manuel :

man systemd.journal-fields

Comment modifier la sortie du journal systemd

Un aspect essentiel de l'utilisation des journaux en tant qu'administrateur système consiste à formater les sorties de journal. Systemd propose de nombreuses méthodes pour manipuler le résultat visuel et récupérer les données dans le format souhaité.

Vous trouverez ci-dessous quelques options d'édition de sortie standard et des exemples.

Sortie vers sortie standard

Le journalctl La commande affiche la sortie à l'aide d'un pager. Désactivez le pager avec :

journalctl --no-pager

La sortie résultante est en sortie standard (stdout). Utilisez cette option lors de l'analyse des données de journal avec des outils d'édition de texte ou des scripts Bash.

Tronquer ou développer la sortie

Le journalctl pager affiche les événements de journal développés dans la sortie. En appuyant sur le droit et touches fléchées vers la gauche aide à naviguer dans le texte qui ne correspond pas à la taille de l'écran.

Pour limiter tronquer le journalctl sortie, utilisez le --no-full choix :

journalctl --no-full

La sortie limite les lignes à la taille de l'écran, en ajoutant des points de suspension (... ) pour indiquer un affichage tronqué.

Formats de sortie

Le journalctl La commande offre diverses options pour les formats de sortie. La syntaxe du format de sortie est :

journalctl -o <output format>

Certains des formats disponibles incluent :

  • cat - Affiche uniquement le champ de message.
  • export - Format de sortie binaire, adapté aux sauvegardes.
  • short - Génère une sortie similaire aux fichiers Syslog classiques.
  • short-precise - Affiche l'heure en microsecondes.
  • json - Formate les entrées de journal en entrées JSON sur une seule ligne.
  • json-pretty - Formats en structures JSON sur plusieurs lignes.

Par exemple, pour afficher en utilisant le json-pretty format, utilisez :

journalctl -o json-pretty

Différents formats permettent d'utiliser les données du journal dans des bases de données, des fichiers de script ou de les analyser via un logiciel de surveillance.

Maintenance des journaux

Le stockage des données de journal a un coût et prend de la place. Vous trouverez ci-dessous quelques conseils et astuces pour découvrir l'utilisation du disque, conserver les fichiers de données de journal et libérer de l'espace utilisé par les anciens fichiers journaux.

Afficher l'utilisation du disque

Pour vérifier l'utilisation du disque journal, exécutez la commande suivante :

journalctl --disk-usage

La sortie montre l'espace total occupé sur le disque par les journaux archivés et actifs.

Supprimer les anciens journaux

Supprimez les anciennes archives de journaux en définissant la limite de taille souhaitée. La commande nécessite sudo pour supprimer les fichiers /var/log/journal .

Par exemple, définissez la taille sur 1 M avec :

sudo journalctl --vacuum-size=1M

Entrez le mot de passe sudo et appuyez sur Entrée . La sortie imprime les noms et tailles des fichiers, et la dernière ligne indique la quantité de mémoire libérée.

Vous pouvez également supprimer les journaux archivés en fonction du temps. Tous les fichiers antérieurs à l'heure définie sont supprimés et libèrent de la mémoire. Par exemple, pour supprimer des fichiers datant de plus de deux mois, exécutez :

sudo journalctl --vacuum-time=2months

Les suffixes horaires sont s , m , h , days , months , weeks , ou years .

Limiter le journal

Le fichier de configuration du journal permet de définir des limites et de contrôler la quantité de données journalisées sur le disque. Pour modifier le fichier, exécutez :

sudo nano /etc/systemd/journald.conf

Le fichier contient des exemples de champs de configuration. Les paramètres suivants traitent de la taille du journal et des limites de mémoire :

  • SystemMaxUse - Stockage persistant maximal utilisé par le journal.
  • SystemKeepFree - Quantité d'espace libre qu'un journal laisse lors de l'ajout d'entrées au stockage persistant.
  • SystemMaxFileSize - Définit la taille maximale des fichiers journaux dans le stockage persistant.
  • RuntimeMaxUse - Espace disque de stockage volatil maximum.
  • RuntimeKeepFree - Quantité d'espace libre pour d'autres utilisations lors de l'écriture dans un stockage volatile.
  • RuntimeMaxFileSize - Définit la taille maximale des fichiers journaux dans le stockage volatile.

Les contrôles de taille de fichier ciblent les fichiers archivés pour atteindre les limites. Décommentez les lignes et fixez les limites pour mieux contrôler les ressources de stockage et de consommation de la machine.

Conclusion

Ce guide a montré comment afficher, contrôler et gérer les journaux de journal systemd à travers des exemples. Le journalctl La commande est un outil précieux qui aide à dépanner les services Linux et à découvrir les erreurs système.


Linux
  1. Variables d'environnement Linux :comment lire et définir sur un VPS Linux

  2. Comment lire et corriger les messages de refus SELinux

  3. Comment :gérer les journaux système avec Journalctl

  4. Comment copier et modifier des fichiers dans le shell Android ?

  5. Comment ouvrir, lire et écrire à partir du port série en C ?

Comment j'ai appris à arrêter de m'inquiéter et à aimer systemd

Comment lire la sortie et les utilisations de la commande Linux Top

Comment configurer et lire le Webmail

Comment effacer les journaux de journal Systemd

Comment utiliser journalctl pour afficher et manipuler les journaux Systemd

Lisez et analysez vos journaux système Linux avec Journalctl