#1 20. Juli 2007 Logdateien - Zeilen löschen Moin, benutze Debian Sarge aufm Root... Nun betreibe ich darauf Teamspeakserver, und ein Script legt für jeden Server eine eigene Datei an... Aber diese Datei wird ja ewig lang, da immer alles angehängt wird. Deshalb brauche ich nun ein Script, das ich bei crontab benutzen kann und das immer nur die Zeilen löscht, wo ein Datum enthalten ist, das älter als 30 Tage ist. Eine Zeile sieht so aus: Die Logdateien heißen alle vserver_servernummer.log. Also von vserver_1.log bis vserver_300.log (oder so) Wer kann mir helfen? Bewertung is drin.
#2 20. Juli 2007 AW: Logdateien - Zeilen löschen hm also nach datum, ka aber nach der anzahl der zeilen könntest kürzen. cat altelogdatei |tail --lines=500 > neuelogdatei cat /dev/null altelogdatei
#3 21. Juli 2007 AW: Logdateien - Zeilen löschen vielen dank, auch an beginner, der mir das gescriptet hat =) closed Code: #!/usr/bin/env python # published under the GPLv2 import os, datetime, time, os.path path = "." tage = 30 listdir = os.listdir(path) for file in listdir: if not "vserver_" in file: continue if os.path.getsize(file) == 0: os.remove(file) continue f = open(file, "r") ol = [] for l in f.read().split("\n"): t = l.split(",")[0] try: if (datetime.datetime.today() - datetime.datetime(*(time.strptime(t, "%d-%m-%y %H:%M:%S" )[0:6]))).days < 30: ol.append(l) except: ol.append(l) f.close() f = open(file + "neu", "w") f.write("\n".join(ol)) f.close() print "fertig"