tail -f mit grep in datei umlenken

Post Reply
Message
Author
joergmaier
Posts: 4
Joined: 04. Mar 2002 14:17

tail -f mit grep in datei umlenken

#1 Post by joergmaier »

hallo,
ich moechte aus einer datei alle zeilen, die einen bestimmten hostnsmen enthalten, in eine datei umlenken. es sollen auch folgende eintraege in diese datei beachtet werden.
leider funktioniert ein
tail -f /var/log/messages | grep $hostname > /var/log/messages.$hostname &
nicht.
auch mit less +F gelingt das noch weniger.
vielleicht geht es auch anders leichter??
vielen dank schonmal fuer die hilfe.
joerg

LBS

Re: tail -f mit grep in datei umlenken

#2 Post by LBS »

Servo,

wenn Du jeden gefundenen Eintrag in eine Datei reinschreiben willst, dann probier das mal

grep $hostname /var/log/messages >>/var/log/messages/$hostname

hab ich Dich jetzt richtig verstanden???

cu

Jochen

Re: tail -f mit grep in datei umlenken

#3 Post by Jochen »

tail gibt per Default nur die letzten 10 Zeilen der angegebenen Datei aus. Wenn Du mehr von der Datei haben willst, musst Du die Option -n verwenden. Unter der Prämisse, dass die messages-Datei nie mehr als 10 Millionen Zeilen gross ist <img src="http://www.pl-forum.de/UltraBoard/Images/Happy.gif" border="0" align="middle"> kannst Du folgendes Kommando verwenden:<pre>tail -n 10000000 -f /var/log/messages | grep $hostname > /var/log/messages.$hostname &</pre>

Jochen

joergmaier
Posts: 4
Joined: 04. Mar 2002 14:17

Re: tail -f mit grep in datei umlenken

#4 Post by joergmaier »

hallo
das problem ist nicht, dass nur die letzten 10 zeilen gegrept werden, das ist schon ok, das problem ist, dass die neue datei zwar erzeugt wird, sie bleibt jedoch leer.
also
tail -f /var/log/messages | grep $server
gibt mir auf der konsole schon neue zeilen, die $server enthalten aus, aber
tail -f /var/log/messages | grep $server >> /var/log/messages.$server
schreibt nie etwas in /var/log/messages.$server
hinein, diese datei wird zwar erzeugt, bleibt aber leer, selbst wenn garantiert etwas mit $server nach /var/log/messages geschrieben wurde, nachgeprueft mit
less +F /var/log/messages

joergmaier
Posts: 4
Joined: 04. Mar 2002 14:17

Re: tail -f mit grep in datei umlenken

#5 Post by joergmaier »

zu 1.
das funktioniert schon, ich will aber alle neu hinzukommenden zeilen, die $server enthalten, auch nach /var/log/messages.$server
schreiben.
deshalb das mit tail -f
joerg

Jochen

Re: tail -f mit grep in datei umlenken

#6 Post by Jochen »

Ah. Dann ist das Problem anders gelagert: Wenn Ausgaben an ein Terminal gehen, wird lediglich zeilenweise gebuffert. Gehen Sie dagegen in eine Datei, wird in BUFSIZ (BUFSIZE?) Byte-Blöcken gebuffert. Daher kann es geraume Zeit dauern, bis der Buffer voll genug ist und auch etwas weggeschrieben wird. Kill mal spasseshalber das tail-Kommando und schau dann noch mal in die Datei; es sollte dann das erwartete Ergebnis drinstehen.

Normalerweise merkt man die Buffereu nicht, da sich die Kommandos relatic schnell beenden und dabei ihren Buffer flushen. So bleiben sie die ganze Zeit auf halb gefüllten Buffern hängen... Ein direktes Gegenmittel habe ich leider nicht parat.

Jochen

joergmaier
Posts: 4
Joined: 04. Mar 2002 14:17

Re: tail -f mit grep in datei umlenken

#7 Post by joergmaier »

hallo
bin gerade am testen obs klappt. dieser tip war auf jeden fall top, mal abwarten ob irgendwann was drinsteht.

joerg

Post Reply