Logdateien leeren unter Linux

Heute habe ich mit einem Programm herumexperimentiert, welches in eine Logdatei Infos geschrieben hatte. Da ich immer mal wieder den Status des Programm zurücksetzen wollte, musste ich die Logdatei leeren, ohne die Datei zu entfernen

Werbung


Hierzu habe ich verschiedene Möglichkeiten genutzt.

Möchte man die Datei einfach nur leeren, so genügt:

:> logfile.log

Sollen hingegen die letzten 5 Zeilen behalten werden, so nutzt man am besten eine Zwischendatei:

tail -n 5 logfile.log > logfile.log.tmp && mv logfile.log.tmp logfile.log

Oder alternativ (ohne Zwischendatei, geht aber nicht immer):

echo "$(tail -5 logfile.log)" > logfile.log

Veröffentlicht von

Uli

IT-Nerd und Admin

7 Gedanken zu „Logdateien leeren unter Linux“

  1. Hallo Uli,

    hab auch grad nach einer Möglichkeit gesucht, eine File zu verkleinern und die letzten N Zeilen stehen zu lassen. Das tail Beispiel kann aber eigentlich nicht funktionieren, da du dem tail einfach zwei Files zur Ausgabe übergibst. In dem Beispiel würden die letzten 5 Zeilen von logfile.log zweimal ausgegeben (jepp, hab es eben auf meinem Debian getestet). Es fehlt die Pipe, aber IMHO funktioniert das auch nicht, da du nicht von der gleichen File lesen + neu erstellen + schreiben kannst. Lösung wäre zum Beispiel in einer Batchfile folgendes zu machen: lesen, zwischenspeichern, leeren, füllen. Falls es noch einen elleganteren Weg gibt, freue ich mich auf den Hinweis.

    ciao

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

I accept that my given data and my IP address is sent to a server in the USA only for the purpose of spam prevention through the Akismet program.More information on Akismet and GDPR.