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 est00: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
ouemerg
- Alerte -
1
oualert
- Critique :
2
oucrit
- Erreur -
3
ouerr
- Avertissement -
4
ouwarning
- Avis -
5
ounotice
- Informer -
6
ouinfo
- Débogage :
7
oudebug
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.