Schrift
[thread]12405[/thread]

während dem einlesen einer datei zeilen löschen



<< >> 3 Einträge, 1 Seite
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.
nepos
 2008-08-26 17:29
#114002 #114002
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
syslog kann Logmeldungen auch in eine sogenannten Named Pipe schreiben (siehe man syslog.conf). Diese könntest du von deinem Perl-Skript auslesen lassen. Dann brauchst du nichts löschen.
Gast Gast
 2008-08-27 16:07
#114034 #114034
Ah, ok, das versuch ich mal. Vielen Dank
<< >> 3 Einträge, 1 Seite



View all threads created 2008-08-26 16:53.