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
mfg, querdenker