Pygo: "tail -f" blockiert alle Prozesse dieser Gruppe

Hallo,

Zu erst mal - ich bin ein ziemlicher Neueinsteiger und hoffe, ich habe nichts übersehen in den anderen Themen, falls doch, bitte einfach bescheid geben.

Ich versuche mit einem Perl-Script bestimmte Informationen aus einem server-log rauszuziehen und dementsprechend weiterzuverarbeiten. Dabei erstelle ich für verschiedene Server einen child-Prozess, der über die Pipe schon aussortierte Daten an den parent gibt. In den einzelnen Childs nutze ich open(LOG, "tail +0f $server/log/log_$server |"), um auf die log-Datei zuzugreifen (wie hoffentlich zu erkennen ist, soll das script vorerst nicht beendet werden und auch neue Einträge in der Datei sollen dann einfliessen). Wenn jetzt aber einer der Prozesse in die letzte noch existierende Zeile des log-files kommt und versucht, diese auszulesen, wartet er einfach so lange, bis in der nächsten Zeile auch etwas steht. Leider laufen in dieser Zeit weder der parent- noch irgendeiner der anderen child-Prozesse weiter.

Bisher habe ich zB versucht, das tail mit & in den Hintergrund zu schieben (geht vermutlich nicht, weil nicht direkt das tail sondern eher das <LOG> aufhält).

Hat irgendwer einen Tipp für mich oder einen Link, der mir weiterhilft?

Vielen Dank, Pygo

  1. Hello,

    Hat irgendwer einen Tipp für mich oder einen Link, der mir weiterhilft?

    Mittel PHP haben wir das neulich gerade durchexerziert.
    Das Open() wird auf eine Rückmeldung warten, die nicht kommt.
    Also gib ihm eine. Und lenke die Ausgaben entsprechend um.

    http://forum.de.selfhtml.org/archiv/2005/8/t113333/#m719295
    http://de2.php.net/manual/en/function.exec.php

    Da wird ein zusätzlicher PHP-Prozess gestartet, der dann irgendwas im Hintergrund macht.
    Genauso könntest Du das in PERL machen.
    Starte eine weitere Shell im Hintergrund, und lass die die Prozesse ausführen.

    Harzliche Grüße vom Berg
    esst mehr http://www.harte-harzer.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau