[systemd]La taille de systemd.journal(résolu)

Questions et astuces concernant l'installation et la configuration d'archlinux
Répondre
Avatar de l’utilisateur
karhu
Maître du Kyudo
Messages : 1222
Inscription : lun. 27 sept. 2010, 14:32
Localisation : Ile de France

[systemd]La taille de systemd.journal(résolu)

Message par karhu »

Bonjour
Je cherche un moyen de limiter la taille et le contenu de system.journal.
Je m'explique, je souhaiterai avoir un fichier system.journal qui ne contienne que les messages correspondants à la session en cours. C'est à dire tous les messages depuis le démarrage jusqu'à l'arrêt du PC. En gros il serait bien (pour moi) si le fichier n'existait pas, ou était vide au départ.
Cette manipulation pouvait se faire avec sysinit dans le fichier rc.local.shutdown (non je ne suis pas nostalgique :mrgreen: ) comment puis je faire cela maintenant ?
En configurant journal.conf ?
En créant un service à l'extinction ? Et comment ?
Garder les fichiers (momentanément) par journée d'activité ? La suppression en serait facilité.
C'est peut-être un tord, mais je ne consule le journal que lorsque j'ai un problème, et je le trouve trés volumineux et donc pas trés facile à consulter surtout quand on ne sait pas exactement quoi chercher.
Dernière modification par karhu le ven. 07 déc. 2012, 11:47, modifié 1 fois.
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Re: [systemd]La taille de system.journal

Message par tuxce »

Il te suffit de supprimer /var/log/journal.
Par contre, il faut indiquer à pacman de ne pas le créer à la mise à jour de systemd :

Code : Tout sélectionner

NoExtract = /var/log/journal
Avatar de l’utilisateur
karhu
Maître du Kyudo
Messages : 1222
Inscription : lun. 27 sept. 2010, 14:32
Localisation : Ile de France

Re: [systemd]La taille de system.journal

Message par karhu »

Je ne comprends pas bien.
Si je supprime /var/log/journal où trouverai je les messages du système (system.journal) ?
<hs> Comment fais tu pour griser un peu de texte ?</hs>

EDIT : comment lire le fichier user-1000.journal ?
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Re: [systemd]La taille de system.journal

Message par tuxce »

Le journal est dans /run/log ([ c] [ /c] pour griser).
Il ne se lit pas en direct, mais par le biais de journalctl
Avatar de l’utilisateur
FoolEcho
Maître du Kyudo
Messages : 10711
Inscription : dim. 15 août 2010, 11:48
Localisation : Basse-Normandie

Re: [systemd]La taille de system.journal

Message par FoolEcho »

karhu a écrit :EDIT : comment lire le fichier user-1000.journal ?
journalctl _UID=1000 ? ... à condition d'être root ou adm sinon tu es limité à ton seul journal.
«The following statement is not true. The previous statement is true.» :nage:
Avatar de l’utilisateur
karhu
Maître du Kyudo
Messages : 1222
Inscription : lun. 27 sept. 2010, 14:32
Localisation : Ile de France

Re: [systemd]La taille de system.journal

Message par karhu »

@foolEcho ok, merci.
@tuxce actuellement mon répertoire /run/log/ est vide. Serait ce parce que /var/log/journal existe ?

Question subsidiaire : à quoi servent les répertoires /var/tmp/systemd-private-xxxxx et comment les limiter ?
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Re: [systemd]La taille de system.journal

Message par tuxce »

Oui /run/log/ est vide parce que /var/log/journal existe.
Pour les /var/tmp/systemd-private-xxxxx, c'est à chaque fois que tu (enfin la configuration) indiques à systemd de fournir un dossier tmp privé, il en crée un pour tmp et un pour /var/tmp.
Avatar de l’utilisateur
karhu
Maître du Kyudo
Messages : 1222
Inscription : lun. 27 sept. 2010, 14:32
Localisation : Ile de France

Re: [systemd]La taille de system.journal

Message par karhu »

Donc pour limiter ces répertoires j'aurais intérêt à remplacer /var/tmp par un lien symbolique vers /tmp.
Quand à system.journal si je veux conserver juste le dernier il me suffirai de créer un service qui recopie /run/log/system.journal dans /var/log/system.journal au moment du shutdown. De cette manière j'aurais toujours le journal de la dernière période d'activité puisqu'à chaque fermeture il écraserait l'ancien lors de la copie.
Pour remplacer /share/lib/systemd/shutdown.target.wants/@rc.local-shutdown.service je crée un script qui fait le boulot et je modifie la ligne de commande avec mon script.

Code : Tout sélectionner

ConditionFileIsExecutable=/etc/local.shutdown
....
ExecStart=/etc/local.shutdown
Je pense que je devrai modifier aussi

Code : Tout sélectionner

After=rc-local.service basic.target
pour le rendre indépendant de sysinit.
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
oktoberfest
Maître du Kyudo
Messages : 1855
Inscription : mer. 06 janv. 2010, 13:51
Localisation : Ried - Alsace - France

Re: [systemd]La taille de system.journal

Message par oktoberfest »

/var/tmp est fait pour les fichiers temporaires qui doivent persister suite à un redémarrage. Donc un lien vers /tmp n'est pas une bonne idée. J'imagine que systemd doit faire le ménage dans ce répertoire (je n'ai pas de répertoire antérieur au 9 novembre sur mon serveur).
La majorité des bugs se situe entre la chaise et le clavier...
Arrêtez de vous prendre la tête avec les partitions... passez au LVM
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17612
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [systemd]La taille de system.journal

Message par benjarobin »

Je te déconseille fortement de remplacer /var/tmp par un lien symbolique vers /tmp.
Le but de /var/tmp est d'être conservé entre 2 boot, tu risques d'avoir des soucis si tu fait un lien symbolique.
Grillé :D
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
karhu
Maître du Kyudo
Messages : 1222
Inscription : lun. 27 sept. 2010, 14:32
Localisation : Ile de France

Re: [systemd]La taille de system.journal

Message par karhu »

Donc je le garde et je le nettoierai une fois par semaine en même temps que ma mise à jour.
@oktoberfest la dernière fois j'avais 192 de ces répertoires :x .
D'accord ils sont vides, mais quand même.
Et pour le fichier script que dois je changer pour le rendre indépendant de rc-local.service ?
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Avatar de l’utilisateur
tuxce
Maître du Kyudo
Messages : 6677
Inscription : mer. 12 sept. 2007, 16:03

Re: [systemd]La taille de system.journal

Message par tuxce »

karhu a écrit : Quand à system.journal si je veux conserver juste le dernier il me suffirai de créer un service qui recopie /run/log/system.journal dans /var/log/system.journal au moment du shutdown.
Alors, j'avais pas compris que tu voulais garder le dernier log après redémarrage.
Pour cela, je te conseille plutôt de limiter la taille (c'est déjà limité à 10% de l'espace de la partition par défaut et ça laisse toujours 5% de l'espace libre).
Avatar de l’utilisateur
karhu
Maître du Kyudo
Messages : 1222
Inscription : lun. 27 sept. 2010, 14:32
Localisation : Ile de France

Re: [systemd]La taille de systemd.journal

Message par karhu »

La solution envisagée, qui me conviendrait très bien, est la suivante.
À l'extinction de la machine, mon script sauvegarde /run/log/system.journal dans /var/log/system.journal.date (des fois que je veuille en garder plusieurs :D ).
Comme je n'ai plus de répertoire /var/log/journal le contenu de system.journal.date contient tout les messages du boot précédent jusqu'au halt. En cas de problème j'ai donc le fichier /run/log/system.journal qui m'indique ce qui ne va pas et le fichier /var/log/system.journal.hier qui me montre comment ça marchait.
Voilà le script :

Code : Tout sélectionner

#!/bin/bash
#
### Préservation du dernier journal système : /etc/local.shutdown
#
# le répertoire /var/log/journal étant supprimé il faut sauvegarder system.journal
# pour éviter la recréation de ce répertoire ajouter dans /etc/pacman.conf
#       NoExtract = /var/log/journal
#
jour=`date '+%y_%m_%d'`;
cp /run/log/system.journal /var/log/system.journal.$jour;
Il est perfectible bien sûr :wink: .
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17612
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [systemd]La taille de systemd.journal

Message par benjarobin »

Sinon pour les dossiers /var/tmp/systemd-private-* ils sont nettoyés automatiquement s'il sont plus âgé de 30j (configuration par défaut). Certes cela fait beaucoup de dossier et alors ? Ils sont vides :-)
Voir ce sujet https://bbs.archlinux.org/viewtopic.php?pid=1171580 et ces 3 fichiers :

Code : Tout sélectionner

/usr/lib/tmpfiles.d/tmp.conf
/usr/lib/systemd/system/systemd-tmpfiles-clean.timer
/usr/lib/systemd/system/systemd-tmpfiles-clean.service
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
karhu
Maître du Kyudo
Messages : 1222
Inscription : lun. 27 sept. 2010, 14:32
Localisation : Ile de France

Re: [systemd]La taille de systemd.journal

Message par karhu »

Une dernière petite interrogation pour voir si je commence à comprendre systemd.
Voici mon local-shutdown.service :

Code : Tout sélectionner

[Unit]
Description=Local actions before halt
ConditionFileIsExecutable=/etc/local.shutdown
DefaultDependencies=no
After=shutdown.target
Before=shutdown.target

[Service]
Type=oneshot
ExecStart=/etc/local.shutdown
StandardInput=tty
RemainAfterExit=yes
After et Before précisent ils bien le moment exact de l'exécution ?
Il n'y a pas de section [Install], est ce grave ?
StandardInput=tty et RemainAfterExit=yes sont ils bien nécessaires ? Comme ils étaient dans rc-local-shutdown.service je l'ai y laissés :oops:
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Avatar de l’utilisateur
benjarobin
Maître du Kyudo
Messages : 17612
Inscription : sam. 30 mai 2009, 15:48
Localisation : Lyon

Re: [systemd]La taille de systemd.journal

Message par benjarobin »

After (Après) et Before (Avant) indique bien ce que le mot veux dire.
Donc cette condition n'a pas de sens... Tu peux voir "shutdown.target" comme un événement temporel.
Et non il n'y a rien de précis, systemd lance le script comme il veux tant qu'il respecte les règles que tu lui donnes

Sinon j'ajouterai bien ceci :

Code : Tout sélectionner

[Install]
WantedBy=shutdown.target
Ce qui donne

Code : Tout sélectionner

[Unit]
Description=/etc/rc.local.shutdown Compatibility
ConditionFileIsExecutable=/etc/local.shutdown
DefaultDependencies=no
After=basic.target
Before=shutdown.target

[Service]
Type=oneshot
ExecStart=/etc/local.shutdown
StandardInput=tty
RemainAfterExit=yes

[Install]
WantedBy=shutdown.target
Zsh | KDE | PC fixe : AMD Ryzen 9900X, Radeon RX 7700 XT
Titre d'un sujet : [Thème] Sujet (état) / Règles du forum
Avatar de l’utilisateur
karhu
Maître du Kyudo
Messages : 1222
Inscription : lun. 27 sept. 2010, 14:32
Localisation : Ile de France

Re: [systemd]La taille de systemd.journal

Message par karhu »

Merci. Je corrige, je teste et je passe en résolu.

Édition : ça marche.
Si cela intéresse voici les fichiers : /etc/local.sutdown

Code : Tout sélectionner

#!/bin/bash
#
### Préservation du dernier journal système : /etc/local.shutdown
#
# le répertoire /var/log/journal étant supprimé il faut sauvegarder system.journal
# pour éviter la recréation de ce répertoire ajouter dans /etc/pacman.conf
#	NoExtract = /var/log/journal
#
jour=`date '+%y_%m_%d'`;
if [ -f "/run/log/system.journal" ];
then
  cp /run/log/system.journal /var/log/system.journal.$jour;
else
  echo "le fichier /run/log/system.journal n'existe pas" > /var/log/system.journal.$jour;
fi
chmod 644 /var/log/system.journal.$jour;
pour ne garder que le dernier fichier cette seule commande :

Code : Tout sélectionner

#!/bin/bash
cp /run/log/system.journal /var/log/system.journal
/usr/lib/systemd/system/local-shutdown.service

Code : Tout sélectionner

[Unit]
Description=Local actions before halt
ConditionFileIsExecutable=/etc/local.shutdown
DefaultDependencies=no
After=basic.target
Before=shutdown.target

[Service]
Type=oneshot
ExecStart=/etc/local.shutdown
StandardInput=tty
RemainAfterExit=yes

[Install]
WantedBy=shutdown.target
EDITION :
Le script de copie ne fonctionne pas, car le fichier system.journal n'est pas dans le répertoire /run/log/journal
mais

dans /run/log/journal/xxxxxxxxxxxxxxxxxxxxxxxxxxx/
Je regarde, je corrige et je poste. :oops: :oops:
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Avatar de l’utilisateur
karhu
Maître du Kyudo
Messages : 1222
Inscription : lun. 27 sept. 2010, 14:32
Localisation : Ile de France

Re: [systemd]La taille de systemd.journal(résolu)

Message par karhu »

Voilà, voilà.
Maintenant je teste si le répertoire /run/log/journal existe, si non il n'y a rien à faire.
Puis je récupère le répertoire de travail et enfin je sauvegarde le fichier system.journal.

Code : Tout sélectionner

#!/bin/bash
#
### Préservation du dernier journal système : /etc/local.shutdown
#
# le répertoire /var/log/journal étant supprimé il faut sauvegarder system.journal
# pour éviter la recréation de ce répertoire ajouter dans /etc/pacman.conf
#	NoExtract = /var/log/journal
#
if [ -d /run/log/journal ];
then
  jour=`date '+%y_%m_%d'`;
  rep=`ls -A /run/log/journal`;
  if [ "/run/log/journal/$rep/system.journal" ];
  then
    cp /run/log/journal/$rep/system.journal /var/log/system.journal.$jour;
  else
    echo "le fichier /run/log/journal/$rep/system.journal n'existe pas" > /var/log/system.journal.$jour;
  fi
  chmod 644 /var/log/system.journal.$jour;
fi
Avec toutes mes excuses pour la précipitation.
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Avatar de l’utilisateur
Ypnose
Maître du Kyudo
Messages : 1363
Inscription : sam. 01 mai 2010, 13:17

Re: [systemd]La taille de systemd.journal(résolu)

Message par Ypnose »

Je chipote mais le point virgule n'est pas nécessaire après la déclaration des variables, après le chmod et aussi après la ligne then et else.
Avatar de l’utilisateur
karhu
Maître du Kyudo
Messages : 1222
Inscription : lun. 27 sept. 2010, 14:32
Localisation : Ile de France

Re: [systemd]La taille de systemd.journal(résolu)

Message par karhu »

Tu as raison, il n'est pas indispensable parce que le BASH est permissible !
C'est une vieille habitude héritée du C.
De plus en cas de longues séquences sur plusieurs lignes cela termine correctement la commande.
Par contre il est indispensable à la fin du test if [ ? ]; donc autant le mettre partout. :wink:
S'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
Répondre