journalctl - Affiche les entrées de journal du journal systemd
SYNOPSIS
journalctl [OPTIONS...] [CRITÈRES...]
DESCRIPTION
journalctl est utilisé pour afficher les entrées de journal stockées dans le journal par systemd-journald.service(8)
et systemd-journal-remote.service(8).
Si elle est appelée sans paramètres, elle affiche le contenu du journal accessible à l'utilisateur appelant, en commençant par la plus ancienne entrée collectée.
Si un ou plusieurs arguments de correspondance sont transmis, la sortie est filtrée en conséquence. Une correspondance est au format "CHAMP=VALEUR", par exemple "_SYSTEMD_UNIT=httpd.service", se référant aux composants d'une entrée de journal structurée. Voir systemd.journal-fields(7) pour une liste des champs connus. Si plusieurs correspondances sont spécifiées correspondant à différents champs, les entrées de journal sont filtrées par les deux, c'est-à-dire que la sortie résultante affichera uniquement les entrées correspondant à toutes les correspondances spécifiées de ce type. Si deux correspondances s'appliquent au même champ, elles sont automatiquement mises en correspondance comme alternatives, c'est-à-dire que la sortie résultante affichera les entrées correspondant à l'une ou l'autre des correspondances spécifiées pour le même champ. Enfin, le caractère "+" peut apparaître comme un mot distinct sur la ligne de commande. Cela fait que toutes les correspondances avant et après sont combinées dans une disjonction (c'est-à-dire un OU logique).
Il est également possible de filtrer les entrées en spécifiant un chemin de fichier absolu comme argument. Le chemin de fichier peut être un fichier ou un lien symbolique, et le fichier doit exister au moment de la requête. Si un chemin de fichier fait référence à un fichier binaire exécutable, une correspondance "_EXE=" pour le chemin canonique du binaire est ajoutée à la requête. Si un chemin de fichier fait référence à un script exécutable, une correspondance "_COMM=" pour le nom du script est ajoutée à la requête. Si un chemin de fichier fait référence à un nœud de périphérique, des correspondances "_KERNEL_DEVICE=" pour le nom du noyau du périphérique et pour chacun de ses périphériques ancêtres sont ajoutées à la requête. Les liens symboliques sont déréférencés, les noms du noyau sont synthétisés et les périphériques parents sont identifiés à partir de l'environnement au moment de la requête. En général, un nœud de périphérique est le meilleur proxy pour un périphérique réel, car les entrées de journal ne contiennent généralement pas de champs qui identifient un périphérique réel. Pour que les entrées de journal résultantes soient correctes pour le périphérique réel, les parties pertinentes de l'environnement au moment où l'entrée a été enregistrée, en particulier le périphérique réel correspondant au nœud de périphérique, doivent être les mêmes que ceux au moment de la requête. Étant donné que les nœuds de périphérique modifient généralement leurs périphériques correspondants entre les redémarrages, la spécification d'un chemin de nœud de périphérique entraîne la restriction des entrées résultantes à celles du démarrage actuel.
Des contraintes supplémentaires peuvent être ajoutées à l’aide des options --boot, --unit=, etc., afin de limiter davantage les entrées qui seront affichées (ET logique).
La sortie est intercalée à partir de tous les fichiers journaux accessibles, qu’ils soient en rotation ou en cours d’écriture, et quel que soit leur appartenance au système lui-même ou à des journaux d’utilisateurs accessibles. L’option --header peut être utilisée pour identifier les fichiers qui sont affichés.
L’ensemble des fichiers journaux qui seront utilisés peut être modifié à l’aide des options --user, --system, --directory= et --file=, voir ci-dessous.
Tous les utilisateurs ont accès à leurs journaux personnels par utilisateur. Cependant, par défaut, seuls l’utilisateur root et les utilisateurs membres de quelques groupes spéciaux ont accès au journal système et aux journaux des autres utilisateurs. Les membres des groupes « systemd-journal », « adm » et « wheel » peuvent lire tous les fichiers journaux. Notez que les deux derniers groupes ont traditionnellement des privilèges supplémentaires spécifiés par la distribution. Les membres du groupe « wheel » peuvent souvent effectuer des tâches administratives.
La sortie est affichée par pages à l’aide de less par défaut, et les longues lignes sont « tronquées » à la largeur de l’écran. La partie masquée peut être affichée à l’aide des touches fléchées gauche et fléchées droite. L’affichage par pages peut être désactivé ; voir l’option --no-pager et la section « Environnement » ci-dessous.
Lors de l’affichage dans un terminal, les lignes sont colorées en fonction de leur priorité : les lignes du niveau ERROR et supérieur sont colorées en rouge ; les lignes du niveau WARNING sont colorées en jaune ; les lignes du niveau NOTICE sont mises en évidence ; les lignes du niveau INFO sont affichées normalement ; les lignes du niveau DEBUG sont colorées en gris.
Pour écrire des entrées dans le journal, plusieurs méthodes peuvent être utilisées. En général, la sortie des unités systemd est automatiquement connectée au journal, voir systemd-journald.service(8). De plus, systemdcat(1) peut être utilisé pour envoyer des messages directement au journal.
OPTIONS DE SOURCE
Les options suivantes contrôlent la source des enregistrements du journal :
--system, --user
Affiche les messages des services système et du noyau (avec --system). Affiche les messages des services de l’utilisateur actuel (avec --user). Si aucune des deux options n’est spécifiée, affiche tous les messages que l’utilisateur peut voir.
L’option --user affecte la façon dont les arguments --unit= sont traités. Voir --unit=.
Notez que --user ne fonctionne que si la journalisation persistante est activée, via le paramètre Storage= dans journald.conf(5).
Ajouté dans la version 205.
-M, --machine=
Affiche les messages d’un conteneur local en cours d’exécution. Spécifiez le nom d’un conteneur pour vous y connecter.
Ajouté dans la version 209.
-m, --merge
Affiche les entrées intercalées de tous les journaux disponibles, y compris les journaux distants.
Ajouté dans la version 190.
-D DIR, --directory=DIR
Prend un chemin de répertoire en argument. Si spécifié, journalctl opère sur le répertoire de journal spécifié DIR au lieu des chemins de journal système et d’exécution par défaut.
Ajouté dans la version 187.
-i GLOB, --file=GLOB
Prend un modèle de fichier en argument. Si spécifié, journalctl opère sur les fichiers journaux spécifiés correspondant à GLOB au lieu des chemins de journal système et d’exécution par défaut. Peut être spécifié plusieurs fois, auquel cas les fichiers seront intercalés de manière appropriée.
Ajouté dans la version 205.
--root=RACINE
Prend un chemin de répertoire en argument. Si spécifié, journalctl opère sur les répertoires de journaux et la hiérarchie de fichiers de catalogue sous le répertoire spécifié au lieu du répertoire racine (par exemple, --update-catalog créera RACINE/var/lib/systemd/catalog/database, et les fichiers journaux sous RACINE/run/journal/ ou RACINE/var/log/journal/ seront affichés).
Ajouté dans la version 201.
--image=IMAGE
Prend un chemin vers un fichier d’image de disque ou un nœud de périphérique bloc en argument. Si spécifié, journalctl opère sur le système de fichiers dans l’image de disque indiquée. Cette option est similaire à --root=, mais opère sur les systèmes de fichiers stockés dans des images de disque ou des périphériques blocs, offrant ainsi un moyen simple d’extraire les données de journal des images de disque. L’image de disque doit contenir soit uniquement un système de fichiers, soit un ensemble de systèmes de fichiers dans une table de partition GPT, conformément à la spécification UAPI.2 Discoverable Partitions[1]. Pour plus d’informations sur les images de disque prises en charge, consultez l’option du même nom de systemd-spawn(1).
Ajouté dans la version 247.
--image-policy=POLICY
Prend une chaîne de stratégie d’image en argument, comme spécifié dans systemd.image-policy(7). La stratégie est appliquée lorsque vous opérez sur l’image de disque spécifiée via --image=, voir ci-dessus. Si elle n’est pas spécifiée, elle utilise par défaut la stratégie "*", c’est-à-dire que tous les systèmes de fichiers reconnus dans l’image sont utilisés.
--namespace=ESPACE_NOMS
Prend un identifiant d’espace de noms de journal en argument. Si non spécifié, les données collectées par l’espace de noms par défaut sont affichées. Si spécifié, affiche les données de journal de l’espace de noms spécifié. Si l’espace de noms est spécifié comme "*", les données de tous les espaces de noms sont affichées, entrelacées. Si l’identifiant de l’espace de noms est préfixé par "+", les données de l’espace de noms spécifié et de l’espace de noms par défaut sont affichées, entrelacées, mais aucun autre. Pour plus de détails sur les espaces de noms de journal, consultez systemd-journald.service(8).
Ajouté dans la version 245.
OPTIONS DE FILTRAGE
Les options suivantes contrôlent la manière dont les enregistrements de journal sont filtrés :
-S, --since=, -U, --until=
Commence à afficher les entrées à partir de la date spécifiée ou plus récente, ou à partir de la date spécifiée ou plus ancienne, respectivement. Les spécifications de date doivent être au format "2012-10-30 18:17:16". Si la partie temporelle est omise, "00:00:00" est supposée. Si seule la partie des secondes est omise, ":00" est supposée. Si la partie de la date est omise, le jour actuel est supposé. Alternativement, les chaînes "hier", "aujourd’hui", "demain" sont comprises, qui se réfèrent à 00:00:00 du jour précédent le jour actuel, du jour actuel ou du jour suivant le jour actuel, respectivement. "maintenant" se réfère à l’heure actuelle. Enfin, des heures relatives peuvent être spécifiées, préfixées par "-" ou "+", se référant à des heures avant ou après l’heure actuelle, respectivement. Pour une spécification complète de la date et de l’heure, consultez systemd.time(7). Notez que --output=short-full affiche les horodatages qui suivent précisément ce format.
Ajouté dans la version 195.
-c, --cursor=
Commencer à afficher les entrées à partir de l'emplacement dans le journal spécifié par le curseur fourni.
Ajouté dans la version 193.
--after-cursor=
Commencer à afficher les entrées à partir de l'emplacement dans le journal qui suit l'emplacement spécifié par le curseur fourni. Le curseur est affiché lorsque l'option --show-cursor est utilisée.
Ajouté dans la version 206.
--cursor-file=FICHIER
Si le FICHIER existe et contient un curseur, commencer à afficher les entrées après cet emplacement. Sinon, afficher les entrées en fonction des autres options fournies. À la fin, écrire le curseur de la dernière entrée dans le FICHIER. Utilisez cette option pour lire continuellement le journal en appelant journalctl de manière séquentielle.
Ajouté dans la version 242.
-b [[ID][±décalage]|tout], --boot[=[ID][±décalage]|tout]
Afficher les messages d'un démarrage spécifique. Cela ajoutera une correspondance pour "\_BOOT\_ID=".
L'argument peut être vide, auquel cas les journaux du démarrage actuel seront affichés.
Si l'ID de démarrage est omis, un décalage positif recherchera les démarrages en commençant par le début du journal, et un décalage inférieur ou égal à zéro recherchera les démarrages en commençant par la fin du journal. Ainsi, 1 signifie le premier démarrage trouvé dans le journal dans l'ordre chronologique, 2 le deuxième, et ainsi de suite ; tandis que -0 est le dernier démarrage, -1 l'avant-dernier, et ainsi de suite. Un décalage vide équivaut à spécifier -0, sauf lorsque le démarrage actuel n'est pas le dernier démarrage (par exemple, parce que --directory= a été spécifié pour afficher les journaux d'une autre machine).
Si l'ID de 32 caractères est spécifié, il peut être suivi en option d'un décalage qui identifie le démarrage par rapport à celui donné par l'ID de démarrage. Les valeurs négatives indiquent les démarrages précédents et les valeurs positives les démarrages suivants. Si aucun décalage n'est spécifié, une valeur de zéro est supposée et les journaux du démarrage donné par l'ID sont affichés.
L'argument spécial « tout » peut être utilisé pour annuler l'effet d'une utilisation antérieure de -b.
Ajouté dans la version 186.
-u, --unit=UNITÉ|MOTIF
Afficher les messages pour l'unité systemd spécifiée UNITÉ (par exemple, une unité de service), ou pour toutes les unités correspondant au MOTIF. Si un motif est spécifié, une liste de noms d'unités trouvés dans le journal est comparée au motif spécifié et toutes celles qui correspondent sont utilisées. Pour chaque nom d'unité, une correspondance est ajoutée pour les messages de l'unité (« \_SYSTEMD\_UNIT=UNITÉ »), ainsi que des correspondances supplémentaires pour les messages de systemd et les messages concernant les vidages de mémoire pour l'unité spécifiée. Une correspondance est également ajoutée pour « \_SYSTEMD\_SLICE=UNITÉ », de sorte que si l'UNITÉ fournie est une unité systemd.slice(5), tous les journaux des enfants de la tranche seront affichés.
Avec --user, tous les arguments --unit= seront convertis pour correspondre aux messages utilisateur comme s'ils étaient spécifiés avec --user-unit=.
Ce paramètre peut être spécifié plusieurs fois.
Ajouté dans la version 195.
--user-unit=
Afficher les messages pour l'unité de session utilisateur spécifiée. Cela ajoutera une correspondance pour les messages de l'unité (« \_SYSTEMD\_USER\_UNIT= » et « \_UID= ») et des correspondances supplémentaires pour les messages de systemd de session et les messages concernant les vidages de mémoire pour l'unité spécifiée. Une correspondance est également ajoutée pour « \_SYSTEMD\_USER\_SLICE=UNITÉ », de sorte que si l'UNITÉ fournie est une unité systemd.slice(5), tous les journaux des enfants de l'unité seront affichés.
Ce paramètre peut être spécifié plusieurs fois.
Ajouté dans la version 198.
-I, --invocation=ID[±décalage]|décalage
Affiche les messages d’une invocation spécifique de l’unité. Cela ajoutera une correspondance pour "_SYSTEMD_INVOCATION_ID=", "OBJECT_SYSTEMD_INVOCATION_ID=", "INVOCATION_ID=", "USER_INVOCATION_ID=".
Un décalage positif recherchera les invocations d’une unité systemd en commençant par le début du journal, et un décalage nul ou négatif recherchera les invocations en commençant par la fin du journal. Ainsi, 1 signifie la première invocation trouvée dans le journal par ordre chronologique, 2 la deuxième, et ainsi de suite ; tandis que 0 est la dernière invocation, -1 l’invocation avant la dernière, et ainsi de suite.
Si l’ID de 32 caractères est spécifié, il peut éventuellement être suivi de ±décalage, qui identifie l’invocation par rapport à celle donnée par l’ID d’invocation. Les valeurs négatives indiquent les invocations antérieures et les valeurs positives indiquent les invocations ultérieures. Si ±décalage n’est pas spécifié, une valeur de zéro est supposée et les journaux de l’invocation donnée par l’ID seront affichés.
-I est équivalent à --invocation=0, et les journaux de la dernière invocation seront affichés.
Lorsqu’un décalage est spécifié, un nom d’unité doit être spécifié avec l’option -u/--unit= ou --user-unit=.
Lorsqu’il est spécifié avec -b/--boot=, les invocations sont recherchées dans le démarrage spécifié.
Ajouté dans la version 257.
-t, --identifier=SYSLOG_IDENTIFIER
Affiche les messages pour l’identifiant syslog spécifié SYSLOG_IDENTIFIER.
Ce paramètre peut être spécifié plusieurs fois.
Ajouté dans la version 217.
-T, --exclude-identifier=SYSLOG_IDENTIFIER
Exclut les messages pour l’identifiant syslog spécifié SYSLOG_IDENTIFIER.
Ce paramètre peut être spécifié plusieurs fois.
Ajouté dans la version 256.
-p, --priority=
Filtre la sortie en fonction des priorités de message ou des plages de priorités. Accepte soit une seule priorité numérique ou texte (par exemple, entre 0/"emerg" et 7/"debug"), soit une plage de priorités numériques/textes sous la forme DE...À. Les niveaux de journal sont les niveaux de journal syslog habituels, tels que documentés dans syslog(3), c’est-à-dire « emerg » (0), « alert » (1), « crit » (2), « err » (3), « warning » (4), « notice » (5), « info » (6), « debug » (7). Si un seul niveau de journal est spécifié, tous les messages de ce niveau de journal ou d’un niveau de journal inférieur (donc plus important) sont affichés. Si une plage est spécifiée, tous les messages de la plage sont affichés, y compris les valeurs de début et de fin de la plage. Cela ajoutera des correspondances « PRIORITY= » pour les priorités spécifiées.
Ajouté dans la version 188.
--facility=
Filtre la sortie par installation syslog. Accepte une liste séparée par des virgules de nombres ou de noms d’installation. Les noms sont les installations syslog habituelles, telles que documentées dans syslog(3). --facility=help peut être utilisé pour afficher une liste des noms d’installation connus et quitter.
Ajouté dans la version 245.
-g, --grep=
Filtre la sortie pour afficher uniquement les entrées dont le champ MESSAGE= correspond à l’expression régulière spécifiée.
Les expressions régulières compatibles Perl sont utilisées, voir pcre2pattern(3) pour une description détaillée de la syntaxe.
Si le motif est entièrement en minuscules, la comparaison est insensible à la casse. Sinon, la comparaison est sensible à la casse. Cela peut être remplacé avec l’option --case-sensitive, voir ci-dessous.
Lorsqu’il est utilisé avec --lines= (sans le préfixe "+"), --reverse est implicite.
Ajouté dans la version 237.
--case-sensitive[=BOOLEAN]
Rend la comparaison de motifs sensible ou insensible à la casse.
Ajouté dans la version 237.
-k, --dmesg
Affiche uniquement les messages du noyau. Cela ajoute le motif "\_TRANSPORT=kernel". Cela implique --boot=0, sauf si cela est explicitement spécifié.
Ajouté dans la version 205.
OPTIONS DE SORTIE
Les options suivantes contrôlent la façon dont les enregistrements du journal sont affichés :
-o, --output=
Contrôle le formatage des entrées du journal qui sont affichées. Prend l’une des options suivantes :
short
est la valeur par défaut et génère une sortie qui est presque identique au format des fichiers syslog classiques, en affichant une ligne par entrée de journal.
Ajouté dans la version 206.
short-full
est très similaire, mais affiche les horodatages dans le format accepté par les options --since= et --until=. Contrairement aux informations d’horodatage affichées en mode de sortie « short », ce mode inclut le jour de la semaine, l’année et le fuseau horaire dans la sortie, et est indépendant de la langue.
Ajouté dans la version 232.
short-iso
est très similaire, mais affiche les horodatages au format RFC 3339[2] du standard ISO 8601.
Ajouté dans la version 206.
short-iso-precise
comme pour short-iso, mais inclut la précision complète en microsecondes.
Ajouté dans la version 234.
short-precise
est très similaire, mais affiche les horodatages syslog classiques avec une précision complète en microsecondes.
Ajouté dans la version 207.
short-monotonic
est très similaire, mais affiche les horodatages monotones au lieu des horodatages basés sur le temps réel.
Ajouté dans la version 206.
short-delta
comme pour short-monotonic, mais inclut la différence de temps avec l’entrée précédente. Les différences de temps potentiellement peu fiables sont marquées par un "\*".
Ajouté dans la version 252.
short-unix
est très similaire, mais affiche le nombre de secondes écoulées depuis le 1er janvier 1970 UTC au lieu des horodatages basés sur le temps réel (« temps UNIX »). L’heure est affichée avec une précision en microsecondes.
Ajouté dans la version 230.
verbose
affiche les éléments d’entrée structurés complets avec tous les champs.
Ajouté dans la version 206.
export
sérerialize le journal dans un flux binaire (mais principalement basé sur du texte) adapté aux sauvegardes et aux transferts réseau (voir le format d’exportation du journal[3] pour plus d’informations). Pour importer le flux binaire dans le format journald natif, utilisez systemd-journal-remote(8).
Ajouté dans la version 206.
json
formate les entrées sous forme d’objets JSON, séparés par des caractères de saut de ligne (voir le format JSON du journal[4] pour plus d’informations). Les valeurs des champs sont généralement encodées sous forme de chaînes JSON, avec trois exceptions :
Les champs de plus de 4 096 octets sont encodés sous forme de valeurs nulles. (Cela peut être désactivé en passant l’option --all, mais sachez que cela peut entraîner l’allocation d’objets JSON excessivement longs).
Les entrées de journal permettent des champs non uniques au sein de la même entrée de journal. JSON n'autorise pas les champs non uniques au sein des objets. En raison de cela, si un champ non unique est rencontré, un tableau JSON est utilisé comme valeur de champ, listant toutes les valeurs de champ sous forme d'éléments.
Les champs contenant des octets non imprimables ou non UTF8 sont encodés sous forme de tableaux contenant les octets bruts individuellement formatés sous forme de nombres non signés.
Notez que cet encodage est réversible (à l'exception de la limite de taille).
Ajouté dans la version 206.
json-pretty
formate les entrées sous forme de structures de données JSON, mais les formate sur plusieurs lignes afin de les rendre plus lisibles par les humains.
Ajouté dans la version 206.
json-sse
formate les entrées sous forme de structures de données JSON, mais les encapsule dans un format adapté aux événements envoyés par le serveur [5].
Ajouté dans la version 206.
json-seq
formate les entrées sous forme de structures de données JSON, mais les préfixe avec un caractère séparateur d'enregistrement ASCII (0x1E) et les suffixe avec un caractère saut de ligne ASCII (0x0A), conformément aux séquences de texte JSON [6] ("application/json-seq").
Ajouté dans la version 240.
cat
génère une sortie très concise, ne montrant que le message réel de chaque entrée de journal sans métadonnées, pas même un horodatage. S'il est combiné avec l'option `--output-fields=`, il affichera les champs répertoriés pour chaque enregistrement de journal au lieu du message.
Ajouté dans la version 206.
with-unit
similaire à short-full, mais préfixe les noms d'unité et d'utilisateur au lieu de l'identifiant syslog traditionnel. Utile lors de l'utilisation d'instances basées sur des modèles, car cela inclura les arguments dans les noms d'unité.
Ajouté dans la version 239.
--truncate-newline
Tronque chaque message de journal au premier caractère de nouvelle ligne lors de la sortie, de sorte que seule la première ligne de chaque message soit affichée.
Ajouté dans la version 254.
--output-fields=
Une liste séparée par des virgules des champs qui doivent être inclus dans la sortie. Cela n'a d'effet que pour les modes de sortie qui afficheraient normalement tous les champs (verbose, export, json, json-pretty, json-sse et json-seq), ainsi que pour cat. Pour les premiers, les champs "__CURSOR", "__REALTIME_TIMESTAMP", "__MONOTONIC_TIMESTAMP" et "_BOOT_ID" sont toujours imprimés.
Ajouté dans la version 236.
-n, --lines=
Affiche les événements de journal les plus récents et limite le nombre d'événements affichés. L'argument est un entier positif ou "all" pour désactiver la limite. De plus, si le nombre est préfixé par "+", les événements de journal les plus anciens sont utilisés à la place. La valeur par défaut est 10 si aucun argument n'est donné.
Si --follow est utilisé, cette option est implicite. Lorsque ce n'est pas préfixé par "+" et utilisé avec --grep=, --reverse est implicite.
-r, --reverse
Inverse la sortie pour que les entrées les plus récentes soient affichées en premier.
Ajouté dans la version 198.
--show-cursor
Le curseur est affiché après la dernière entrée après deux tirets :
-- cursor: s=0639...
Le format du curseur est privé et susceptible de changer.
Ajouté dans la version 209.
--utc
Affiche l'heure en temps universnel coordonné (UTC).
Ajouté dans la version 217.
-x, --catalog
Augmente les lignes de journal avec des textes explicatifs provenant du catalogue de messages. Cela ajoute des textes d’aide explicatifs aux messages de journal dans la sortie lorsque cela est disponible. Ces courts textes d’aide expliqueront le contexte d’une erreur ou d’un événement de journal, les solutions possibles, ainsi que des liens vers les forums de support, la documentation des développeurs et tout autre manuel pertinent. Notez que les textes d’aide ne sont pas disponibles pour tous les messages, mais uniquement pour ceux qui ont été sélectionnés. Pour plus d’informations sur le catalogue de messages, voir Journal Message Catalogs[7].
Remarque : lorsque vous joignez la sortie de journalctl aux rapports de bogues, veuillez ne pas utiliser -x.
Ajouté dans la version 196.
-W, --no-hostname
N’affiche pas le champ nom d’hôte des messages de journal. Cet commutateur n’a d’effet que sur la famille courte des modes de sortie (voir ci-dessus).
Remarque : cette option ne supprime pas les occurrences du nom d’hôte dans les entrées de journal elles-mêmes, elle ne l’empêche donc pas d’être visible dans les journaux.
Ajouté dans la version 230.
--no-full, --full, -l
Tronque les champs lorsqu’ils ne tiennent pas dans les colonnes disponibles. Par défaut, les champs complets sont affichés, ce qui leur permet de s’envelopper ou d’être tronqués par le paginateur, si un paginateur est utilisé.
Les anciennes options -l/--full ne sont plus utiles, sauf pour annuler l’effet de --no-full.
Ajouté dans la version 196.
-a, --all
Affiche tous les champs au complet, même s’ils contiennent des caractères non imprimables ou sont très longs. Par défaut, les champs contenant des caractères non imprimables sont abrégés en « données blob ». (Notez que le paginateur peut échapper à nouveau les caractères non imprimables.)
-f, --follow
Affiche uniquement les entrées de journal les plus récentes et affiche en continu les nouvelles entrées au fur et à mesure qu’elles sont ajoutées au journal, jusqu’à ce que Ctrl+C soit enfoncé (ou que l’outil soit arrêté d’une autre manière).
journalctl envoie un message sd_notify(3) « READY=1 » une fois qu’il a été initialisé et qu’il a établi avec succès sa surveillance du journal.
--no-tail
Affiche toutes les lignes de sortie stockées, même en mode suivi. Annule l’effet de --lines=.
-q, --quiet
Supprime tous les messages d’information (c’est-à-dire « — Le journal commence à… », « — Redémarrage — »), ainsi que tous les messages d’avertissement concernant les journaux système inaccessibles lorsqu’il est exécuté en tant qu’utilisateur normal.
--synchronize-on-exit=
Accepte un argument booléen. Si la valeur est true et que le programme fonctionne en mode --follow, une demande de synchronisation du journal (équivalente à journalctl --sync) est émise lorsque SIGTERM/SIGINT est reçu, et la sortie du journal continue jusqu’à ce que cette demande soit terminée. Ceci est utile pour synchroniser la sortie du journal avec l’exécution des services ou des événements externes, afin de garantir que toutes les données de journal mises en file d’attente dans le sous-système de journalisation au moment où SIGTERM/SIGINT est reçu sont garanties d’être traitées et affichées lorsque la sortie du journal se termine. Par défaut, la valeur est false.
Ajouté dans la version 258.
OPTIONS DE CONTRÔLE DU PAGINATEUR
Les options suivantes contrôlent la prise en charge des pages :
--no-pager
N’envoie pas la sortie vers un paginateur.
-e, --pager-end
Passe immédiatement à la fin du journal dans le paginateur implicite. Cela implique --lines=1000 et --boot=0, sauf indication contraire explicite, afin de garantir que le paginateur ne mettra pas en mémoire tampon des journaux de taille illimitée. Notez que cette option n’est prise en charge que pour le paginateur [less]({filename}../../less)(1).
Ajouté dans la version 198.
OPTIONS DE SCELLEMENT SÉCURISÉ AVANT (FSS)
Les options suivantes peuvent être utilisées conjointement avec la commande --setup-keys décrite ci-dessous :
--interval=
Spécifie l’intervalle de changement de la clé de scellement lors de la génération d’une paire de clés FSS avec l’option --setup-keys. Des intervalles plus courts augmentent la consommation du processeur, mais réduisent la période pendant laquelle des altérations du journal peuvent passer inaperçues. La valeur par défaut est de 15 minutes.
Remarque : les options --output=json-sse et --output=json-seq sont migrées silencieusement vers --output=json.
Ajouté dans la version 189.
--verify-key=
Spécifie la clé de vérification FSS à utiliser pour l’opération --verify.
Ajouté dans la version 189.
--force
Lorsque l’option --setup-keys est transmise et que le scellement sécurisé avant (FSS) a déjà été configuré, recrée les clés FSS.
Ajouté dans la version 206.
COMMANDES
Les commandes suivantes sont prises en charge. Si aucune n’est spécifiée, la valeur par défaut est d’afficher les enregistrements du journal :
-N, --fields
Affiche tous les noms de champs actuellement utilisés dans tous les enregistrements du journal.
Ajouté dans la version 229.
-F, --field=
Affiche toutes les valeurs de données possibles que le champ spécifié peut prendre dans tous les enregistrements du journal.
Ajouté dans la version 195.
--list-boots
Affiche une liste tabulaire des numéros de démarrage (par rapport au démarrage actuel), de leurs identifiants et des horodatages du premier et du dernier message concernant le démarrage. Lorsqu’elle est spécifiée avec l’option -n/--lines=[+]N, seules les N premières (lorsque le nombre est précédé de « + ») ou les N dernières entrées sont affichées. Lorsqu’elle est spécifiée avec l’option -r/--reverse, la liste est affichée dans l’ordre inverse.
Ajouté dans la version 209.
--list-invocations
Affiche les identifiants d’invocation d’une unité. Nécessite un nom d’unité avec l’option -u/--unit= ou --user-unit=. Affiche une liste tabulaire des numéros d’invocation (par rapport au numéro ou à la dernière invocation actuelle), de leurs identifiants et des horodatages du premier et du dernier message concernant l’invocation. Lorsque -b/-boot est spécifié, les invocations du démarrage sont affichées. Lorsqu’elle est spécifiée avec l’option -n/--lines=[+]N, seules les N premières (lorsque le nombre est précédé de « + ») ou les N dernières entrées sont affichées. Lorsqu’elle est spécifiée avec l’option -r/--reverse, la liste est affichée dans l’ordre inverse.
Ajouté dans la version 257.
--disk-usage
Affiche l’utilisation actuelle du disque de tous les fichiers du journal. Cela affiche la somme de l’utilisation du disque de tous les fichiers de journal archivés et actifs.
Ajouté dans la version 190.
--vacuum-size=, --vacuum-time=, --vacuum-files=
--vacuum-size= supprime les fichiers de journal archivés les plus anciens jusqu’à ce que l’espace disque qu’ils utilisent soit inférieur à la taille spécifiée. Accepte les suffixes habituels « K », « M », « G » et « T » (sur une base de 1024).
--vacuum-time= supprime les fichiers de journal archivés qui sont plus anciens que la période spécifiée. Accepte les suffixes habituels « s » (par défaut), « m », « h », « days », « weeks », « months » et « years », voir systemd.time(7) pour plus de détails.
--vacuum-files= ne conserve que le nombre de fichiers de journal séparés spécifié.
--vacuum-size=, --vacuum-time= et --vacuum-files= peuvent être combinés dans un seul appel pour appliquer n’importe quelle combinaison d’une limite de taille, de temps et de nombre de fichiers aux fichiers journaux archivés. Spécifier l’un de ces trois paramètres avec la valeur zéro équivaut à ne pas appliquer la limite spécifique, et est donc redondant.
Ces trois options peuvent également être combinées avec --rotate dans une seule commande. Dans ce cas, tous les fichiers actifs sont d’abord basculés, puis l’opération de nettoyage demandée est exécutée immédiatement après. La bascule a pour effet que tous les fichiers actuellement actifs sont archivés (et éventuellement de nouveaux fichiers journaux vides sont ouverts en remplacement), et donc l’opération de nettoyage a le plus grand effet car elle peut prendre en compte toutes les données de journal écrites jusqu’à présent.
Ajouté dans la version 218.
--verify
Vérifie la cohérence interne du fichier journal. Si le fichier a été généré avec FSS activé et que la clé de vérification FSS a été spécifiée avec --verify-key=, l’authenticité du fichier journal est vérifiée.
Ajouté dans la version 189.
--sync
Demande au démon journal d’écrire toutes les données journal non encore écrites sur le système de fichiers sous-jacent et de synchroniser tous les journaux. Cet appel ne renvoie pas tant que l’opération de synchronisation n’est pas terminée. Cette commande garantit que tous les messages de journal écrits avant son invocation sont stockés en toute sécurité sur le disque au moment où elle se termine.
Ajouté dans la version 228.
--relinquish-var
Demande au démon journal d’effectuer l’opération inverse de --flush : si demandé, le démon écrira davantage de données de journal dans /run/log/journal/ et arrêtera d’écrire dans /var/log/journal/. Un appel ultérieur à --flush fera basculer la sortie du journal vers /var/log/journal/, comme indiqué ci-dessus.
Ajouté dans la version 243.
--smart-relinquish-var
Similaire à --relinquish-var, mais n’exécute aucune opération si le système de fichiers racine et /var/log/journal/ résident sur le même point de montage. Cette opération est utilisée pendant l’arrêt du système afin de faire en sorte que le démon journal cesse d’écrire des données dans /var/log/journal/ dans le cas où ce répertoire se trouve sur un point de montage qui doit être démonté.
Ajouté dans la version 243.
--flush
Demande au démon journal de décharger toutes les données journal stockées dans /run/log/journal/ dans /var/log/journal/, si le stockage persistant est activé. Cet appel ne renvoie pas tant que l’opération n’est pas terminée. Notez que cet appel est idempotent : les données ne sont déchargées de /run/log/journal/ vers /var/log/journal/ qu’une seule fois pendant l’exécution du système (mais voir --relinquish-var ci-dessous), et cette commande se termine proprement sans exécuter d’opération si cela s’est déjà produit. Cette commande garantit effectivement que toutes les données sont déchargées vers /var/log/journal/ au moment où elle se termine.
Ajouté dans la version 217.
--rotate
Demande au démon du journal de faire une rotation des fichiers du journal. Cet appel ne renvoie pas de valeur tant que l’opération de rotation n’est pas terminée. La rotation des fichiers du journal a pour effet que tous les fichiers du journal actuellement actifs sont marqués comme archivés et renommés, de sorte qu’ils ne soient plus écrits ultérieurement. De nouveaux fichiers de journal (vides) sont ensuite créés à leur place. Cette opération peut être combinée avec --vacuum-size=, --vacuum-time= et --vacuum-file= en une seule commande, voir ci-dessus.
Ajouté dans la version 227.
--header
Au lieu d’afficher le contenu du journal, affiche les informations d’en-tête internes des champs du journal auxquels on accède.
Cette option est particulièrement utile lorsque vous essayez d’identifier les entrées de journal hors séquence, comme cela se produit, par exemple, lorsque la machine est démarrée avec l’heure système incorrecte.
Ajouté dans la version 187.
--list-catalog [128-bit-ID...]
Affiche le contenu du catalogue de messages sous forme de tableau d’ID de messages, ainsi que de leurs courtes descriptions.
Si des ID 128 bits sont spécifiés, seules ces entrées sont affichées.
Ajouté dans la version 196.
--dump-catalog [128-bit-ID...]
Affiche le contenu du catalogue de messages, avec des entrées séparées par une ligne constituée de deux tirets et de l’ID (le format est le même que les fichiers .catalog).
Si des ID 128 bits sont spécifiés, seules ces entrées sont affichées.
Ajouté dans la version 199.
--update-catalog
Met à jour l’index du catalogue de messages. Cette commande doit être exécutée chaque fois que de nouveaux fichiers de catalogue sont installés, supprimés ou mis à jour afin de reconstruire l’index binaire du catalogue.
Ajouté dans la version 196.
--setup-keys
Au lieu d’afficher le contenu du journal, génère une nouvelle paire de clés pour le scellement sécurisé en avant (FSS). Cela générera une clé de scellement et une clé de vérification. La clé de scellement est stockée dans le répertoire des données du journal et doit rester sur l’hôte. La clé de vérification doit être stockée en externe. Reportez-vous à l’option Seal= dans journald.conf(5) pour obtenir des informations sur le scellement sécurisé en avant et pour un lien vers un article scientifique faisant autorité détaillant la théorie cryptographique sur laquelle il est basé.
Ajouté dans la version 189.
-h, --help
Affiche un court texte d’aide et quitte.
--version
Affiche une courte chaîne de version et quitte.
CODE DE SORTIE
En cas de succès, 0 est renvoyé ; sinon, un code d’échec non nul est renvoyé.
ENVIRONNEMENT
$SYSTEMD_LOG_LEVEL
Le niveau de journalisation maximal des messages émis (les messages ayant un niveau de journalisation plus élevé, c’est-à-dire moins importants, seront supprimés). Prend une liste de valeurs séparées par des virgules. Une valeur peut être l’une des suivantes (par ordre d’importance décroissante) : emerg, alert, crit, err, warning, notice, info, debug, ou un entier dans la plage 0...7. Voir syslog(3) pour plus d’informations. Chaque valeur peut être précédée de l’un des éléments suivants : console, syslog, kmsg ou journal suivi de deux points pour définir le niveau de journalisation maximal pour cette cible de journalisation spécifique (par exemple, SYSTEMD_LOG_LEVEL=debug,console:info spécifie de journaliser au niveau de débogage, sauf lorsque la journalisation se fait vers la console, ce qui doit se faire au niveau d’information). Notez que le niveau de journalisation maximal global a la priorité sur les niveaux de journalisation maximaux par cible.
$SYSTEMD_LOG_COLOR
Une valeur booléenne. Si elle est vraie, les messages écrits sur le terminal seront colorés en fonction de leur priorité.
Ce paramètre n’est utile que lorsque les messages sont écrits directement sur le terminal, car
journalctl(1) et d’autres outils qui affichent les journaux attribueront des couleurs aux messages en fonction du niveau de journal.
$SYSTEMD_LOG_TIME
Une valeur booléenne. Si elle est vraie, les messages de journalisation de la console seront précédés d’un horodatage.
Ce paramètre n’est utile que lorsque les messages sont écrits directement sur le terminal ou dans un fichier, car journalctl(1) et d’autres outils qui affichent les journaux attacheront des horodatages en fonction des
métadonnées de l’entrée de journal.
$SYSTEMD_LOG_LOCATION
Une valeur booléenne. Si elle est vraie, les messages seront précédés du nom de fichier et du numéro de ligne du code source où le message est généré.
Notez que l’emplacement du journal est souvent joint en tant que métadonnée aux entrées de journal. L’inclure directement dans le texte du message peut néanmoins être pratique pour le débogage des programmes.
$SYSTEMD_LOG_TID
Une valeur booléenne. Si elle est vraie, les messages seront précédés de l’ID de thread numérique actuel (TID).
Notez que cette information est jointe en tant que métadonnée aux entrées de journal. L’inclure directement dans le texte du message peut néanmoins être pratique pour le débogage des programmes.
$SYSTEMD_LOG_TARGET
La destination des messages de journal. Peut être console (journalisation sur le terminal connecté), console-prefixed
(journalisation sur le terminal connecté, mais avec des préfixes encodant le niveau de journal et la « installation », voir
syslog(3)), kmsg (journalisation dans le tampon de journal circulaire du noyau), journal (journalisation dans le journal),
journal-or-kmsg (journalisation dans le journal si disponible, et dans kmsg sinon), auto (déterminer automatiquement la cible de journal, qui est la valeur par défaut), null (désactiver la sortie du journal).
$SYSTEMD_LOG_RATELIMIT_KMSG
Indique s’il faut limiter le débit de kmsg ou non. Prend une valeur booléenne. La valeur par défaut est « true ». Si désactivée, systemd
ne limitera pas le débit des messages écrits dans kmsg.
$SYSTEMD_PAGER, $PAGER
Paginator à utiliser lorsque l’option --no-pager n’est pas spécifiée. $SYSTEMD_PAGER est utilisé si elle est définie ; sinon, $PAGER est utilisé. Si ni $SYSTEMD_PAGER ni $PAGER ne sont définies, un ensemble d’implémentations de paginateur bien connues est essayé à tour de rôle, y compris [less]({filename}../../less)(1) et more(1), jusqu’à ce qu’une soit trouvée. Si aucune implémentation de paginateur n’est découverte, aucun paginateur n’est invoqué. Définir ces variables d’environnement sur une chaîne vide ou la valeur « cat » équivaut à passer l’option --no-pager.
Remarque : si $SYSTEMD_PAGERSECURE n’est pas définie, $SYSTEMD_PAGER et $PAGER ne peuvent être utilisées que pour désactiver le paginateur (avec « cat » ou « »), et sont sinon ignorées.
$SYSTEMD_LESS
Remplace les options passées à less (par défaut « FRSXMK »).
Les utilisateurs peuvent souhaiter modifier deux options en particulier :
K
Cette option indique au paginateur de quitter immédiatement lorsque Ctrl+C est pressé. Pour permettre à less de gérer Ctrl+C lui-même afin de revenir à l’invite de commandes du paginateur, désactivez cette option.
Si la valeur de $SYSTEMD_LESS n’inclut pas « K », et que le paginateur qui est invoqué est less, Ctrl+C sera ignoré par l’exécutable, et devra être géré par le paginateur.
X
Cette option indique au paginateur de ne pas envoyer de chaînes d’initialisation et de désinitialisation termcap au terminal. Par défaut, elle est activée pour que la sortie des commandes reste visible dans le terminal, même après la fermeture du paginateur. Néanmoins, cela empêche certaines fonctionnalités du paginateur de fonctionner, notamment la possibilité de faire défiler la sortie paginée à l’aide de la souris.
Notez que la définition de la variable d’environnement $LESS standard n’a aucun effet pour les invocations de less par les outils systemd.
Voir less(1) pour plus d’informations.
$SYSTEMD_LESSCHARSET
Remplace le jeu de caractères transmis à less (par défaut, « utf-8 », si le terminal d’appel est considéré comme compatible UTF-8).
Notez que la définition de la variable d’environnement $LESSCHARSET standard n’a aucun effet pour les invocations de less par les outils systemd.
$SYSTEMD_PAGERSECURE
Les commandes de paginateur courantes, telles que less(1), en plus de la « pagination », c’est-à-dire du défilement de la sortie, prennent en charge l’ouverture ou l’écriture d’autres fichiers et l’exécution de commandes shell arbitraires. Lorsque les commandes sont invoquées avec des privilèges élevés, par exemple sous sudo(8) ou pkexec(1), le paginateur devient une limite de sécurité. Il faut veiller à ce que seuls les programmes ayant une fonctionnalité strictement limitée soient utilisés comme paginateurs, et que des fonctionnalités interactives non désirées, telles que l’ouverture ou la création de nouveaux fichiers ou le lancement de sous-processus, ne soient pas autorisées. Un « mode sécurisé » pour le paginateur peut être activé comme décrit ci-dessous, si le paginateur le prend en charge (la plupart des paginateurs ne sont pas écrits de manière à en tenir compte). Il est recommandé d’activer explicitement le « mode sécurisé » ou de désactiver complètement le paginateur à l’aide de --no-pager ou PAGER=cat lorsque des utilisateurs non autorisés sont autorisés à exécuter des commandes avec des privilèges élevés.
Cette option prend un argument booléen. Lorsque la valeur est définie sur true, le « mode sécurisé » du paginateur est activé. En « mode sécurisé », LESSSECURE=1 sera défini lors de l’invocation du paginateur, ce qui indique au paginateur de désactiver les commandes qui ouvrent ou créent de nouveaux fichiers ou démarrent de nouveaux sous-processus. Actuellement, seul less(1) est connu pour prendre en charge cette variable et implémenter le « mode sécurisé ».
Lorsque la valeur est définie sur false, aucune limitation n’est imposée au paginateur. Définir SYSTEMD_PAGERSECURE=0 ou ne pas la supprimer de l’environnement hérité peut permettre à l’utilisateur d’invoquer des commandes arbitraires.
Lorsque $SYSTEMD_PAGERSECURE n’est pas défini, les outils systemd tentent de déterminer automatiquement si le « mode sécurisé » doit être activé et si le paginateur le prend en charge. Le « mode sécurisé » est activé si l’UID effectif n’est pas le même que celui du propriétaire de la session de connexion, voir geteuid(2) et sd_pid_get_owner_uid(3), ou lorsqu’il s’exécute sous sudo(8) ou des outils similaires ($SUDO_UID est défini [8]). Dans ces cas, SYSTEMD_PAGERSECURE=1 sera défini et les paginateurs qui ne sont pas connus pour implémenter le « mode sécurisé » ne seront pas utilisés. Notez que cette détection automatique couvre uniquement les mécanismes les plus courants d’élévation des privilèges et est destinée à être utilisée à titre de commodité. Il est recommandé de définir explicitement $SYSTEMD_PAGERSECURE ou de désactiver le paginateur.
Notez que si les variables $SYSTEMD_PAGER ou $PAGER doivent être prises en compte, autre que pour désactiver le paginateur, la variable $SYSTEMD_PAGERSECURE doit également être définie.
$SYSTEMD_COLORS
Accepte un argument booléen. Lorsque la valeur est vraie, systemd et les utilitaires associés utiliseront des couleurs dans leur sortie ; sinon, la sortie sera monochrome. De plus, la variable peut prendre l'une des valeurs spéciales suivantes : "16", "256" pour limiter l'utilisation des couleurs aux 16 ou 256 couleurs ANSI de base, respectivement. Cela peut être spécifié pour remplacer la décision automatique basée sur $TERM et la connexion de la console.
$SYSTEMD_URLIFY
La valeur doit être un booléen. Contrôle si des liens cliquables doivent être générés dans la sortie pour les émulateurs de terminal qui prennent en charge cette fonctionnalité. Cela peut être spécifié pour remplacer la décision que systemd prend en fonction de $TERM et d'autres conditions.
EXEMPLES
Sans arguments, tous les journaux collectés sont affichés sans filtre :
journalctl
Avec une seule correspondance spécifiée, toutes les entrées dont un champ correspond à l'expression sont affichées :
journalctl _SYSTEMD_UNIT=avahi-daemon.service
journalctl _SYSTEMD_CGROUP=/user.slice/user-42.slice/session-c1.scope
Si deux champs différents sont mis en correspondance, seules les entrées correspondant aux deux expressions en même temps sont affichées :
journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID=28097
Si deux correspondances se réfèrent au même champ, toutes les entrées correspondant à l'une ou l'autre des expressions sont affichées :
journalctl _SYSTEMD_UNIT=avahi-daemon.service _SYSTEMD_UNIT=dbus.service
Si le séparateur "+" est utilisé, deux expressions peuvent être combinées dans une relation OU logique. L'exemple suivant affichera tous les messages du processus du service Avahi avec l'ID de processus 28097, ainsi que tous les messages du service D-Bus (de n'importe lequel de ses processus) :
journalctl _SYSTEMD_UNIT=avahi-daemon.service _PID=28097 + _SYSTEMD_UNIT=dbus.service
Pour afficher tous les champs émis par une unité et concernant l'unité, l'option -u/--unit= doit être utilisée. journalctl -u name se développe en un filtre complexe similaire à
_SYSTEMD_UNIT=name.service
+ UNIT=name.service _PID=1
+ OBJECT_SYSTEMD_UNIT=name.service _UID=0
+ COREDUMP_UNIT=name.service _UID=0 MESSAGE_ID=fc2e22bc6ee647b6b90729ab34a250b1
(voir systemd.journal-fields(7) pour une explication de ces modèles).
Afficher tous les journaux générés par l'exécutable D-Bus :
journalctl /usr/bin/dbus-daemon
Afficher tous les journaux du noyau du démarrage précédent :
journalctl -k -b -1
Afficher un flux de journaux en direct à partir d'un service système apache :
journalctl -f -u apache
VOIR AUSSI
systemd(1), systemd-cat(1), systemd-journald.service(8), systemctl(1), coredumpctl(1), systemd.journal-fields(7), journald.conf(5), systemd.time(7), systemd-journal-remote.service(8), systemd-journal-upload.service(8)
NOTES
UAPI.2 Spécification des partitions détectables
https://uapi-group.org/specifications/specs/discoverable_partitions_specification
RFC 3339
https://tools.ietf.org/html/rfc3339
Format d’exportation du journal
https://systemd.io/JOURNAL_EXPORT_FORMATS#journal-export-format
Format JSON du journal
https://systemd.io/JOURNAL_EXPORT_FORMATS#journal-json-format
Événements envoyés par le serveur
https://developer.mozilla.org/en-US/docs/Server-sent_events/Using_server-sent_events
Séquences de texte JSON
https://tools.ietf.org/html/rfc7464
Catalogues de messages du journal
https://systemd.io/CATALOG
Il est recommandé que d’autres outils définissent et vérifient $SUDO_UID de manière appropriée, en le traitant comme une
interface commune.