ubuntuusers.de

tail und grep script

Status: Ungelöst | Ubuntu-Version: Server 10.04 (Lucid Lynx)
Antworten |

Herbststurm

Anmeldungsdatum:
27. Mai 2011

Beiträge: 244

Hallo

Ich habe eine sehr große Datei, in welcher in regelmäßigen Zeitabständen durch ein laufendes Programm eine Zeile dazu kommt. Diese kommt nicht ganz am Ende hinzu, sondern in der Mitte der Datei. Ich filtere diese Zeilen derzeit mit grep heraus.

Nun würde ich gerne ein script schreiben, welches tail-f und grep derart verbindet, dass ich automatisiert am Bildschirm sehe, wenn eine Zeile hinzukommt.

Vermutlich muss man geschickt pipes verwenden, doch ich weiss nicht wie das konkret realisierbar wäre.

Wie realisiere ich das?

Grüsse

Kinch

Anmeldungsdatum:
6. Oktober 2007

Beiträge: 1261

Die Datei wächst von der Mitte her? Das ist ziemlich ungewöhnlich.

Erster Ansatz wäre, regelmäßig greppen zu lassen:

watch -d -n30 grep ...

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13219

Herbststurm schrieb:

Ich habe eine sehr große Datei, in welcher in regelmäßigen Zeitabständen durch ein laufendes Programm eine Zeile dazu kommt. Diese kommt nicht ganz am Ende hinzu, sondern in der Mitte der Datei. Ich filtere diese Zeilen derzeit mit grep heraus.

Und wie erkennst Du sie?

Wie realisiere ich das?

Mir fallen da zuerst die inotify-Tools ein. Damit kann man sich vom Kernel informieren lassen, wenn sich im Dateisystem etwas tut. Das ist wohl die effizienteste Möglichkeit, sich über Änderungen einer Datei informieren zu lassen. Dafür wäre wichtig zu wissen, ob die Datei aktualisiert oder neu geschrieben wird.

Ciao

robert

Herbststurm

(Themenstarter)

Anmeldungsdatum:
27. Mai 2011

Beiträge: 244

@Kinch

Ich denke das ist zielführend. Danke

Ja, die Datei wächst in der Mitte.

@rklm Ich habe keine root Rechte und diese tools sind nicht installiert.

Ich habe bis jetzt regelmäßig grep genutzt um die neuen Zeilen anzeigen zu lassen. wenn eine neue Zeile hinzukam, habe ich das mit grep gesehen.

Grüsse

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17625

Wohnort: Berlin

Herbststurm schrieb:

Ja, die Datei wächst in der Mitte.

Das gibt es eigentlich nicht, wenn man nicht vorab Speicher dafür reserviert hat, wobei sie dann nicht wächst - es sei denn es ist eine Sparse-Datei.

theinlein

Anmeldungsdatum:
29. Dezember 2007

Beiträge: 1279

Hi,

wenn eine Datei "in der Mitte wächst" dann würde das heißen, dass ab dieser "neuen Mitte" bis zum Ende der Datei alles neu geschrieben werden muss. Naders bliebe die Datei so wie sie ist und nur der Mittelteil wird durch die neuen Zeichen überschrieben.

Für große Dateien ist das i.d.R. inakzeptabel, da dadurch die Performance leidet. Genauso ist es dann auch mit tail. tail beobachtet sozusagen nur das Ende. Man müsste tail ab der Mitte ausgeben lassen - das willst du nicht wirklich.

Woran siehst du, dass die Datei in der Mitte wächst? Wächst die Datei von der Größe her?

Um z.B. zyklish in der Mitte aus der Datei etwas herauszulesen, könntest du 'dd' verwenden. Ansonsten müsste man tatsächlich auf das zurückgreifen, was rklm geschrieben hat: inotify-Zeug

rklm Team-Icon

Projektleitung

Anmeldungsdatum:
16. Oktober 2011

Beiträge: 13219

Herbststurm schrieb:

Ich habe bis jetzt regelmäßig grep genutzt um die neuen Zeilen anzeigen zu lassen. wenn eine neue Zeile hinzukam, habe ich das mit grep gesehen.

Kannst Du das etwas genauer beschreiben, wie Du die neue Zeile mit grep erkennst?

Ciao

robert

Antworten |