ubuntuusers.de

Inhalt aus Logfiles löschen

Status: Gelöst | Ubuntu-Version: Ubuntu 22.04 (Jammy Jellyfish)
Antworten |

Fraglord

Avatar von Fraglord

Anmeldungsdatum:
24. November 2007

Beiträge: 108

Wohnort: Pforzheim

Hallo Community,

gibt es eine Möglichkeit, Inhalte aus einer Logfile zu löschen und bspw. nur die neusten 1.000 Zeilen zu behalten oder alles, was 500 KB überschreitet "von alt nach neu" zeilenweise zu löschen?

Könnte dies mit den folgenden Befehlen klappen bzw. was muss ich hier konkret anpassen?

sed -i '1,100000d' /path/to/logfile

oder

mv writelog writelog.bak
tail -1000 writelog.bak > writelog

oder evtl. per truncate?

Das Skript würde ich dann per crontab laufen lassen...so zumindest der Plan stand heute ☺

Ich wäre für Eure Hilfe dankbar.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17622

Wohnort: Berlin

Ja, abgesehen davon, dass man für viele Logfiles Rootrechte brauchen wird.

Truncate ist weniger geeignet, da es byte-, nicht zeilenweise arbeitet, und man dann irgendwo halbe Zeilen stehen hat.

Logfiles des Systems kann man auch per logrotate in der Größe einhegen; bestimmt kann man aber auch eigene Logfiles von Logrotate pflegen lassen.

Fraglord

(Themenstarter)
Avatar von Fraglord

Anmeldungsdatum:
24. November 2007

Beiträge: 108

Wohnort: Pforzheim

Danke Dir, user_unknown für Deine Rückmeldung und Deine Meinung.

Wenn mir die "alten Inhalte" der Logs nicht wichtig sind, könnte ich so gesehen auch Truncate verwenden und halbe Sätze in Kauf nehmen?

So wie ich Logrotate verstehe, wird dort vom Logfile eine Kopie erstellt, diese komprimiert und eine neue (leere) generiert?

Eine Lösung per "Eingriff" in die Inhalte der Logfiles ("lösche jede Woche alle alten Zeilen nach Zeile 500) gibt es nicht? Oder wäre hier dann doch SED bzw TAIL die einfachste Variante?

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13215

Es gibt eine Konfiguration vom systemd journal, mit der man verschiedene Limits einstellen kann. Wenn ich mich richtig erinnere, sind das Anzahl, Alter und Volumen. Einfach die Konfiguration ändern und spätestens nach dem nächsten Reboot wird das honoriert. Kann dann noch bis zum nächsten Logrotate dauern, aber den kann man auch manuell anstoßen.

dingsbums

Anmeldungsdatum:
13. November 2010

Beiträge: 3790

rklm schrieb:

Es gibt eine Konfiguration vom systemd journal, mit der man verschiedene Limits einstellen kann.

Siehe z.B. https://www.freedesktop.org/software/systemd/man/journald.conf.html.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17622

Wohnort: Berlin

Ich habe logrotate nie intensiv benutzt, nur 1, 2 mal näher angeschaut und systemd ist neuer und wird logrotate wahrscheinlich verdrängen, ist aber m.E. auch etwas komplizierter. Von man logrotate:

1
2
3
       logrotate is designed to ease administration of systems that generate large numbers of log files.  It  allows
       automatic  rotation,  compression,  removal,  and  mailing of log files.  Each log file may be handled daily,
       weekly, monthly, or when it grows too large.

Generell werden logs oft so organisiert, dass das aktuelle log xy.log heißt, und in täglichem Turnus umbenannt wird, nach einem Tag in xy.log.1 und dann xy.log.2 bis xy.log.MAX und MAX kann 3, 5, 7 oder etwas beliebiges anderes sein. 2 und die folgenden werden häufig gezippt, und da Logs oft - v.a. wenn sie groß werden - sehr redundant sind lassen sie sich stark komprimieren und sind dann auf der Platte gar nicht so groß - Faktor 1/10 ist keine Seltenheit.

Den aktuellen Log ständig zu komprimieren wäre aber ineffizient und den von gestern hält man wohl für schnelleren Zugriff aus traditionellen Gründen unkomprimiert vor, da der häufiger noch gelesen wird (mit zless, zgrep u.dgl. aber für menschliche Reaktionszeiten unmerklich langsamer als less, grep und cat).

Mit man logrotate.conf erfährst Du, wie Du es konfigurierst und womögl., ob es für Dich geeignet ist. Vorteil: Du lernst ein universell eingesetztes Systemtool, das wahrscheinlich ordentlich getestet und gewartet ist - Nachteil: Du musst die Logik eines anderen lernen, statt Deine eigene umzusetzen.

Parallelen und Unterschiede zu journalctl kann ich leider nicht referieren und weiß nur vage, dass journalctl die Daten wohl in einem Binärformat speichert.

Fraglord

(Themenstarter)
Avatar von Fraglord

Anmeldungsdatum:
24. November 2007

Beiträge: 108

Wohnort: Pforzheim

Dankeschön für Eure ausführliche Unterstützung ☺

Antworten |