L'exécution de journalctl
sous un système CentOS 7 affiche simplement les messages générés après le dernier démarrage.
La commande
# journalctl --boot=-1
impressions
Failed to look up boot -1: Cannot assign requested address
et quitte avec le statut 1.
En le comparant à un système Fedora actuel, je remarque que le CentOS 7 n'a pas /var/log/journal
(et journalctl
ne fournit pas --list-boots
).
Ainsi ma question comment afficher les messages du journal qui ont été écrits avant la dernière date de démarrage.
Ou, peut-être que cette fonctionnalité doit être activée sur CentOS 7?
(La page de manuel journalctl
répertorie "systemd 208" comme numéro de version.)
Sur CentOS 7, vous devez activer le stockage persistant des messages de journal:
# mkdir /var/log/journal
# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald
Sinon, les messages du journal ne sont pas conservés entre les démarrages.
Si journald
conserve les messages de journal des démarrages précédents, est configuré via /etc/systemd/journald.conf
. Le paramètre par défaut sous CentOS 7 est:
[Journal]
Storage=auto
Où la page de manuel journald.conf explique auto
comme:
Un parmi "volatile", "persistant", "auto" et "aucun". Si elles sont "volatiles", les données du journal de journal seront stockées uniquement en mémoire, c'est-à-dire en dessous de la hiérarchie/run/log/journal (qui est créée si nécessaire). Si elles sont "persistantes", les données seront stockées de préférence sur disque, c'est-à-dire en dessous de la hiérarchie/var/log/journal (qui est créée si nécessaire), avec un retour à/run/log/journal (qui est créé si nécessaire), pendant démarrage précoce et si le disque n'est pas accessible en écriture. " auto " est similaire à "persistant" mais le répertoire /var/log/journal n'est pas créé si nécessaire, de sorte que son existence contrôle où vont les données du journal .
(souligner le mien)
La page de manuel systemd-journald.service indique donc que:
Par défaut, le journal stocke les données de journal dans/run/log/journal /. Étant donné que/run/est volatile, les données de journal sont perdues au redémarrage. Pour rendre les données persistantes, il suffit de créer/var/log/journal/où systemd-journald stockera ensuite les données.
Apparemment, la valeur par défaut était modifiée dans Fedora 19 (pour le stockage persistant) et puisque CentOS 7 est dérivé de Fedora 18 - il n'y est toujours pas persistant, par défaut. La persistance est implémentée par défaut en dehors de journald via /var/log/messages
et les versions pivotées /var/log/messages-YYYYMMDD
qui sont écrits par rsyslogd (qui s'exécute par défaut et obtient son entrée de journald).
Ainsi, pour permettre une journalisation persistante avec journald sous RHEL/CentOS 7, il faut
# mkdir /var/log/journal
puis fixer les autorisations et redémarrer journald, par exemple via
# systemd-tmpfiles --create --prefix /var/log/journal
# systemctl restart systemd-journald
systemctl restart systemd-journald
Vous pouvez perdre vos journaux: voir https://github.com/systemd/systemd/issues/2236
mkdir /var/log/journal
Il y a changer dans v208
:
systemd-journald n'ajustera plus le groupe de fichiers journaux qu'il crée au groupe "systemd-journal". Au lieu de cela, nous nous appuyons sur le répertoire du journal appartenant au groupe "systemd-journal" et à son ensemble de bits setgid, de sorte que la couche du système de fichiers noyau applique automatiquement que les fichiers journaux héritent de cette affectation de groupe.
Un extrait de fichier tmpfiles.d (5) inclus dans systemd s'assurera que le bit et le groupe setgid sont correctement définis dans le répertoire journal s'il existe à chaque démarrage.
Vous devez donc exécuter quelque chose comme systemd-tmpfiles --create --prefix /var/log/journal
après mkdir /var/log/journal
Voir aussi :