[Linux] Logdateien - Zeilen löschen

Dieses Thema im Forum "Linux & BSD" wurde erstellt von karlos, 20. Juli 2007 .

Status des Themas:
Es sind keine weiteren Antworten möglich.
  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"
    
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.