Definierten Zeitpunkt hochzählen

R

ramann

Eroberer
Hi Zusammen,

ich möchte Logfiles in einem bestimmten Zeitfenstern durchsuchen.

Beispiel:

Start 1.1.09 10:10
Ende 3.1.09 11:13

Gibt es einen Befehl mit dem ich einen definierten Zeitpunkt hochzählen kann?

Thanks
Bjoern

System: GNU bash, version 3.2.33(1)-release (x86_64-suse-linux-gnu)
SUSE Linux Enterprise Server 10 (x86_64)
 
z.B. apache access log:

127.0.0.1 - - [23/Jan/2009:07:19:19 -0800] "GET /cgi-bin/tinfo.dll?fun=check HTTP/1.1" 500 1171 SERVERTIME=0 X-SRC-IP=- X-Forwarded-For="-" HTTP_HOST=127.0.0.1 REFERER="-" X-Client-Host=- X-Akamai-Edgesca
pe="-" X-Cookie="-"
1
 
Ja, das lässt sich machen.
Du musst nur das Datum filtern, in einen Timestamp bringen (z.B. mit GNU date oder gleich mit Perl) und dann alle Zeilen verwerfen, die ausserhalb liegen.
Du kommst aber nicht um das Auslesen der Datei bis zum Endpunkt, da ja jede Zeile erst geparst und das Datum convertiert werden muss.

Gruß Wolfgang
 
Klar geht das:
Öffne dein Log und springe zu dem Zeitpunkt des Anfangs, merke dir die Zeilennummer:
und dann:

Code:
tail -n $Zeilennummer_Anfang $logfile > anfang.txt

Öffne dann anfang.txt und springe zu dem End-Zeitpunkte, merke dir wieder die Zeilennumer:
Code:
head -n $Zeilennummer_Ende anfang.txt > gesamt.txt

"gesamt.txt" ist dann die Textdatei die du für den entsprechenden Zeitraum untersuchen möchtest

Liese sich auch scripten in dem du mit grep gleich nach den entsprechenden Timestamps suchst und die Zeilennummern in einer Variable speicherst.
 

Ähnliche Themen

OpenJDK8 unter Debian7.11/sparc64/kernel 3.16 kompilieren

Fedora 20 - Unlösbare Paket-Duplikat Konflikte

openn SuSE 13.1 - 64-BIt erlaubt nicht mehr als 20GB für /root

Prblem mit zeilenweises auslesen von Datei und schreiben nach mysql

Hilfe bei Interpretation des RAM-Speicherverbrauchs

Zurück
Oben