Seite 1 von 1

tail syslog...

Verfasst: Dienstag 29. März 2005, 12:33
von jens

Code: Alles auswählen

def tail( filename, max = 5 ):
    """
    Gibt die letzten >max<-Zeilen einer Datei aus
    """
    print "<h3>%s</h3>" % filename

    f = file( filename, "r" )
    print "<pre>"
    print " ".join( f.readlines()[-max:] )
    print "</pre>"

tail( "/var/log/syslog" )
tail( "/var/log/daemon.log" )
tail( "/var/log/auth.log" )
Jemand eine bessere Lösung parat?
Dumm finde ich, das per f.readlines() erstmal die gesammte Datei eingelesen wird und nicht nur gezielt die letzten Zeilen... Wenn die LOG-Datei richtig lang ist, dauert es ein weilchen und verbraucht RAM...

Re: tail syslog...

Verfasst: Dienstag 29. März 2005, 12:51
von Leonidas
jens hat geschrieben:Dumm finde ich, das per f.readlines() erstmal die gesammte Datei eingelesen wird und nicht nur gezielt die letzten Zeilen... Wenn die LOG-Datei richtig lang ist, dauert es ein weilchen und verbraucht RAM...
Kennst du schon seek()? Damit kannst du ihm auch angeben, er soll von ende aus lesen.

Verfasst: Dienstag 29. März 2005, 13:19
von jens
Hm! Guter Tip... Ist zwar etwas unschön, beschleunigt die Ausgabe aber schon spürbar!
Ohne seek ca. 0.2-0.3sek mit seek 0.0006-0.0007sek

Code: Alles auswählen

def tail( filename, max = 5 ):
    """
    Gibt die letzten >max<-Zeilen einer Datei aus
    """
    print "<h3>%s</h3>" % filename

    f = file( filename, "r" )
    seekpos = -80*max
    f.seek( seekpos, 2 )
    print "<pre>"
    print " ".join( f.readlines()[-max:] )
    print "</pre>"

tail( "/var/log/syslog" )
tail( "/var/log/daemon.log" )
tail( "/var/log/auth.log" )

Verfasst: Mittwoch 30. März 2005, 12:22
von querdenker
@Leonidas
Kennst du schon seek()? Damit kannst du ihm auch angeben, er soll von ende aus lesen.
@Jens

Cool, ihr habt mir einen sehr hilfreichen Tip gegeben für die schedlgU.txt, die der Windows-Taskplaner schreibt.
Ich habe immer mal wieder darüber nachgedacht, wie ich die auswerten kann, was konkretes ist mir aber bisher noch nicht eingefallen.

Stöbern lohnt sich :D

mfg, querdenker