Ich habe seit Kurzem ein Problem mit systemd, das die Protokolle früherer Startvorgänge nicht speichert. Ich habe hier und anderswo mehrere Antworten geprüft, aber keine Lösung gefunden.
Das Problem besteht darin, dass das Benutzerprotokoll über mehrere Systemstarts hinweg bestehen bleibt, Systemprotokolle jedoch nicht.
/etc/systemd/journald.conf
[Journal]
Storage=persistent
SystemMaxUse=500M
SystemMaxFiles=5
journalctl -b -1
[root@2ba2de9e /var/log/journal] # journalctl --system -b -1
Data from the specified boot (-1) is not available: No such boot ID in journal
Ich verwende Archlinux Arm auf einigen Raspberry Pis
Versionen4.14.24-1-ARCH
systemd 237.64-1
systemd-sysvcompat 237.64-1
Hat jemand eine Idee, warum das passiert? Auf meinem Desktop-Computer funktioniert es ohne Probleme?
Antwort1
Es ist möglich, dass Journald die alten Protokolle löscht, weil Sie nicht genügend Speicherplatz haben. (Sie haben nicht erwähnt, wie lange nach dem Booten es -b -1
nicht funktioniert, daher weiß ich nicht, ob Sie zu diesem Zeitpunkt viele Protokolle vom aktuellen Booten haben.)
Sie haben SystemMaxUse=500M
es konfiguriert, aber journald könnte entscheiden, weniger als 500 MB zu verwenden, wenn Sie nicht zu viel freien Speicherplatz haben. Es gibt auch eine SystemKeepFree=...
Einstellung, die standardmäßig 15 % der Größe des Dateisystems (oder 4 GB, je nachdem, was kleiner ist) beträgt, und journald wird diese Grenze strenger durchsetzen als den von Ihnen zugelassenen Speicherplatz. Wenn Sie /var/log/journal
eine kleine Partition haben, könnte das Teil des Problems sein.
Mit einigen Befehlen können Sie überprüfen, wie viel Speicherplatz Journald verwendet. Zum Beispiel:
$ journalctl --disk-usage
Außerdem können Sie sehen, wie viele Boots (und wie ihre Zeiten und IDs lauten) journald kennt, und zwar mit:
$ journalctl --list-boots
Diese könnten ebenfalls dazu beitragen, Licht in Ihr Problem zu bringen ...
Ich hoffe das hilft!
Antwort2
Meine Distribution kam mit dieser Datei: /etc/systemd/journald.conf.d/volatile-storage.conf
Sie hatte die folgende Zeile
Storage=volatile
Der volatile Teil muss in persistent geändert werden, sonst /etc/systemd/journal.conf
wird die Änderung ignoriert.
Antwort3
Erweiterung aufmirrAntwort: Damit Storage=volatile
und Storage=auto
funktionieren, /var/log/journal
muss das Verzeichnis vorhanden sein und einige Distributionen stellen diesen Speicherort nicht standardmäßig bereit.
Sie müssen also journald
alles, was sich im Speicher befindet, erstellen und anweisen, es dorthin zu übertragen.
sudo mkdir /var/log/journal ## Enable persistent logging
sudo journalctl --flush