Log Dateien unter Linux Wöchentlich leeren per Shell/Crontab

Nun, meine System-Logs sind mal wieder voll: Also, was machen wir? Die Log Dateien selbst zu Löschen wäre fatal, da diese nicht neu angelegt werden, sprich man hat sich das System erfolgreich zerschossen. Also wird der Inhalt der Dateien ins „nichts“ geschrieben, sodass die Dateien und der deren Zugriffsrechte weiterhin intakt bleiben.
Zuerst wechseln wir in das Entsprechende Verzeichnis, unter Debian ist dies /var/log/ :

Jetzt kommt das Spannende an der Geschichte: Durch ‚test‘ lokalisieren wir die Dateien, überprüfen sie und löschen sie, in einer Schleife.

Gib das bitte genauso ein, da nach dem ersten Kommando die dort mit geschriebenen „>“ kommen.
Nun wollte ich dass ja nicht immer machen. Also muss das ganze in die Crontab.

Durch test wird, wie schon erwähnt, auf die jeweilige Datei geprüft. Der Inhalt der Dateien werden dann ins „nichts“ durch „> $i“ geschrieben.
Nun wird jede Woche um 00:00 der Cronjob ausgeführt, sprich die Dateien werden geleert. Aber Achtung: Derartige Spielchen könnten das System ernsthaft gefährden, würde es also nur auf PC empfehlen, welche typischerweise nicht in die Hände anderer kommen.

Soweit wünsche ich viel Spaß und einen Sonnigen Freitag morgen! 🙂

19 Gedanken zu „Log Dateien unter Linux Wöchentlich leeren per Shell/Crontab

  1. Ich bleibe dann doch lieber bei „logrotate“ und konfiguriere die /etc/logrotate.conf so, dass die beibehaltenen Logdateien in der Größe überschaubar bleiben. So habe ich immer wenigstens ein paar Tage Logdateien gespeichert.

    Zur Lösung mit der wöchentlichen „Leerung“. Bedeutet das nicht, dass ich irgendwann an den Punkt komme, wo alle Logfiles leer sind? Und an einem anderen Punkt der Woche habe ich dann fast eine Woche Logfiles gespeichert?

    1. Hey!
      Ich hatte, wie schon so oft hier nun geschrieben(^^) noch nicht viel von Logrotate gehört. Wie schon erwähnt sehe ich mir dass demnächst mal an, um einen Weiteren Beitrag dazu zu verfassen, um dies nicht unberücksichtigt zu lassen.
      MfG

  2. Beim durchschnittlichen Admin sitzt auf der einen Schulter Murphy und auf der Anderen der Klabauterman. Fünf Jahre brauchst du keine logs erst 12 Sekunden nachdem du sie gelöscht hast, stellst du fest das du sie diesmal brauchst. Eine Lösung die das Alter der logs berücksichtigt halt ich für besser.

    1. Hey,
      danke für den Link! 🙂
      Leider habe ich momentan viele Kommentare die so sinnlos sind, dass ich diese einfach in den Spam kloppen muss. Auch ich erwarte mehr als 2 Worte zu einem Beitrag, der auch länger als 2 Worte sind. Ein Konstruktives Feedback wie von dir ist immer erwünscht! 😉
      MfG

    1. Hey!
      Eigentlich nichts. Leider habe ich von Logrotate bisher nur stellenweise gehört. Ich guck mir Logrotate die Tage nochmal an, sodass ich dazu noch etwas ergänzendes Schreiben kann.
      Kreativität ist das einzige was ich mir zugestehe 😀
      mfG

  3. Nicht existierende Logdateien werden unter Linux neu angelegt. Allerdings lassen viele Programme ihre Logdateien geöffnet. Wenn du eine geöffnete Datei unter Linux löschst, wird erst einmal nur der Verzeichniseintrag entfernt, die eigentliche Datei bleibt aber erhalten, bis kein Programm sie mehr geöffnet hat. Und solange die Datei zum Schreiben geöffnet ist, kann ein Programm da natürlich auch reinschreiben, auch wenn der Verzeichniseintrag nicht mehr existiert.

    Manche Programme schließen ihre Logdateien bei bestimmten Signalen, z.B. SIGHUP, andere muss man dazu neu starten.

    Die meisten Linux-Distributionen verwenden Logrotate, um die Logdateien regelmäßig zu "rotieren", d.h. z.B. foo.log.3.gz wird gelöscht, foo.log.2.gz wird nach foo.log.3.gz umbenennt, foo.log.1 wird nach foo.log.2.gz komprimiert, foo.log wird in foo.log1. umbenannt und foo.log wird neu erzeugt.

    Dabei kann man für jede Logdatei einstellen, wann sie rotiert werden soll, wie viele alte Versionen man behalten will, was vor und nach dem Rotieren passieren soll (da kann man z.B. dafür sorgen, dass alle Programme tatsächlich die neuen Logfiles benutzen).

    1. Das liebe ich am Bloggen: Man schreibt zwar etwas, um jemandem etwas mitzuteilen, aber man selbst lernt auch eine Menge dabei. Danke für dein Kommentar, von Logrotate habe ich bisher immer nur teilweise gehört, kam mir aber irgendwie Unnötig kompliziert vor^^
      MfG

  4. Hallo,
    ich rate Dir davon ab, dein Script im Ordner /var/log, oder generell in den Verzeichnissen /var/* anzuwenden.
    Es werden nicht nur, Logs geleert, sondern auch wichtige Informationen während der Laufzeit eines
    System verworfen.
    Dass dann bei dir im Script die Unterverzeichnisse nicht berücksichtigt werden, ist in dem Fall ein Trost 😉

Kommentar verfassen