Page 1 sur 1
[systemd]La taille de systemd.journal(résolu)
Publié : jeu. 06 déc. 2012, 14:17
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

) 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.
Re: [systemd]La taille de system.journal
Publié : jeu. 06 déc. 2012, 14:23
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 :
Re: [systemd]La taille de system.journal
Publié : jeu. 06 déc. 2012, 15:05
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 ?
Re: [systemd]La taille de system.journal
Publié : jeu. 06 déc. 2012, 15:27
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
Re: [systemd]La taille de system.journal
Publié : jeu. 06 déc. 2012, 15:30
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.
Re: [systemd]La taille de system.journal
Publié : jeu. 06 déc. 2012, 15:40
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 ?
Re: [systemd]La taille de system.journal
Publié : jeu. 06 déc. 2012, 16:03
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
.
Re: [systemd]La taille de system.journal
Publié : jeu. 06 déc. 2012, 16:30
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
pour le rendre indépendant de sysinit.
Re: [systemd]La taille de system.journal
Publié : jeu. 06 déc. 2012, 17:06
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).
Re: [systemd]La taille de system.journal
Publié : jeu. 06 déc. 2012, 17:07
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é

Re: [systemd]La taille de system.journal
Publié : jeu. 06 déc. 2012, 17:23
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

.
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 ?
Re: [systemd]La taille de system.journal
Publié : jeu. 06 déc. 2012, 17:26
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).
Re: [systemd]La taille de systemd.journal
Publié : jeu. 06 déc. 2012, 18:56
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

).
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

.
Re: [systemd]La taille de systemd.journal
Publié : jeu. 06 déc. 2012, 19:50
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
Re: [systemd]La taille de systemd.journal
Publié : ven. 07 déc. 2012, 10:28
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

Re: [systemd]La taille de systemd.journal
Publié : ven. 07 déc. 2012, 10:34
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 :
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
Re: [systemd]La taille de systemd.journal
Publié : ven. 07 déc. 2012, 11:22
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.

Re: [systemd]La taille de systemd.journal(résolu)
Publié : ven. 07 déc. 2012, 21:05
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.
Re: [systemd]La taille de systemd.journal(résolu)
Publié : ven. 07 déc. 2012, 21:50
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
.
Re: [systemd]La taille de systemd.journal(résolu)
Publié : ven. 07 déc. 2012, 22:18
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.
