Thread während dem einlesen einer datei zeilen löschen (2 answers)
Opened by Gast at 2008-08-26 16:53

Gast Gast
 2008-08-26 16:53
#114000 #114000
Hallo,

ich finde nichts zu folgendem Thema. Wäre nett, wenn mir dabei jemand helfen könnte.
Das Problem allgemein:
Ein Syslog-Server schreibt in eine Datei rein. Diese Datei will ich mit einem Perl-Skript auswerten. Damit die Festplatte nicht überläuft, lasse ich logrotate laufen, um von der Datei, in die reingeschrieben wird, ein komprimiertes Backup zu machen und sie neu anzulegen. Sobald logrotate dies tut, hört mein Skript auf, die Datei auszuwerten.
Das einlesen der Datei geschieht im Skript mit dem Standard-Befehl open(...). Die Datei wird permanent offen gehalten, wird keine neue Zeile in die Datei geschrieben, schläft das Skript eine Sekunde lang.

Ich bräuchte entweder eine Lösung, bei der mein Skript nicht aufhört, die Datei auszuwerten, obwohl logrotate die Datei (die vom Skript noch offengehalten wird) kurzzeitig löscht und neu anlegt.

Oder als alternative Lösung:
Wie kann ich, nachdem ich eine Zeile (die vom Syslog in die Datei geschrieben wurde) ausgewertet habe, ebendiese Zeile aus der Datei löschen? Damit könnte ich mir logrotate sparen.
Meine Skills, was Perl und Zeilen einer Datei löschen angeht, beschränken sich auf "Datei in Array einlesen"->"Zeile aus Array löschen"->"Array in Datei schreiben" Was aber hier ja leider nicht anwendbar ist.

Vielen Dank im voraus.

View full thread während dem einlesen einer datei zeilen löschen