Je n'ai trouvé dans google aucun moyen sûr d'effacer le journal systemd. Quelqu'un connaît-il un moyen sûr et fiable de le faire?
Supposons que j'expérimente quelque chose et que mes journaux soient encombrés de divers messages d'erreur. De plus, j'affiche mon journal sur mon bureau en utilisant Conky. Je ne veux vraiment pas voir ces erreurs car elles me rappellent une horrible journée où je réparais ce truc, je veux me sentir comme un homme frais après cette horreur. Je pense que tout le monde conviendra que c'est une raison valable pour effacer les journaux: P.
La méthode d'auto-maintenance consiste à aspirer les bûches par taille ou par durée.
Conserver uniquement les deux derniers jours:
journalctl --vacuum-time=2d
Ne conserver que les 500 derniers Mo:
journalctl --vacuum-size=500M
man journalctl
pour plus d'informations.
Vous n'effacez pas le journal vous-même. Cela est géré par systemd lui-même et les anciens journaux sont supprimés à mesure que de nouvelles données entrent. La bonne chose à faire serait de planifier journald pour ne conserver que les données que vous souhaitez. La chose la plus courante à régler est le disque total l'espace qu'il est autorisé à occuper. Une fois qu'il franchit cette limite, il commencera à lancer les anciennes entrées pour rester près de cette valeur.
Vous pouvez définir cela dans /etc/systemd/journald.conf
comme ceci:
SystemMaxUse=100M
Réponse de Michael il manque une chose: passer l'aspirateur ne supprime que les fichiers journaux archivés, pas les fichiers actifs. Pour vous débarrasser de tout, vous devez d'abord faire pivoter les fichiers afin que les entrées récentes soient déplacées vers des fichiers inactifs.
Ainsi, la réponse complète pour supprimer toutes les entrées semble être
journalctl --rotate
journalctl --vacuum-time=1s
(Notez que vous ne pouvez pas combiner cela en une seule commande journalctl
.)
Soit dit en passant, certaines distributions ont configuré journald de sorte qu'il écrit des journaux sur le disque (/var/log/journal
) tandis que d'autres gardent les journaux en mémoire (/run/log/journal
). Je pense que dans certains cas, il peut être nécessaire d'utiliser journalctl --flush
d'abord pour tout supprimer.
Si vous n'avez pas --rotate
dans votre version, vous pouvez utiliser le --since
argument pour filtrer les entrées:
--since "2019-01-30 14:00:00"
--since today
Sur Arch Linux, le plus proche que j'ai obtenu était:
Sudo systemctl restart systemd-journald
Sur mon système, chaque fichier journal fait 8 Mo, et ce qui précède est effacé tous sauf 3, ce qui porte la taille totale à environ 25 Mo.
Mon cas d'utilisation désactivait CoW pour BTRFS (uniquement pour le répertoire du journal et les sous-répertoires): Sudo chattr +C /var/log/journal/*
. Le problème est que l'attribut n'est défini que sur les fichiers nouvellement créés, d'où le désir de vider le journal.
Depuis --vacuum-time
et --vacuum-size
n'a rien fait pour moi, j'ai fait ce qui suit:
$ Sudo find /var/log/journal -name "*.journal" | xargs Sudo rm
$ Sudo systemctl restart systemd-journald
Ce n'est pas bien, mais cela a fonctionné.
Une méthode très brute pour nettoyer tout le journal:
$ Sudo journalctl --vacuum-time=1seconds
Vous pouvez aussi utiliser --vacuum-size
comme Michael l'a mentionné.
--Rotate et --vacuum-time = 1s ne fonctionnaient pas pour moi sur CentOS. J'ai pu l'effacer comme ceci:
Sudo rm -rf /run/log/journal/*
Ma réponse précédente vient d'être supprimée pour être "dupliquée". Eh bien, désolé de ne pas avoir été assez clair dans ma réponse précédente, mais c'était différent des réponses existantes. Voici donc une version plus élaborée:
journalctl -m --vacuum-time=1s
a fait l'affaire pour moi. Veuillez noter le -m
flag, il fusionne tous vos journaux puis les nettoie. Sans le -m
flag, il n'a rien nettoyé dans mon cas (sur CentOS-7).
J'espère que cela aide.
journalctl -b
s'affichera uniquement à partir du démarrage le plus récent. Vous pouvez aussi utiliser -b -1
, -b -2
etc. Votre horrible journée est toujours là, mais vous n'aurez pas à la voir, sauf si vous en avez besoin.
Aussi Sudo journalctl --vacuum-files 1
.
Sauvegardez-le au cas où vous en auriez besoin à l'avenir:cp /run/log/journal/<temp-string>/system.journal /mylog/dir/back/system.journal.bak
Effacez le fichier:cd /run/log/journal/<temp-string>/
>system.journal
Vérifiez pour voir les derniers journaux:journalctl -xe