Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]12211[/thread]

Frage zur Realisierung von Abarbeitung von Logs unter Linux

Leser: 1


<< >> 6 Einträge, 1 Seite
chris-
 2008-07-21 13:05
#112370 #112370
User since
2007-10-18
18 Artikel
BenutzerIn
[default_avatar]
Hi,

ich habe ein Skript, dass postfix Mail logs zusammenfasst. Es schreibt eine Zeile pro gesendete/verworfene Mail.

Wie kann ich es nun realisieren, dass sich das Script - nach dem er alle Zeilen aus dem Log gelesen hat - sich nicht beendet, sondern auf weitere Zeilen wartet?

So etwa:
Code: (dl )
tail -f /var/log/mail.log | mein_pg

Nur soll er die ganze mail.log von Anfang an ausgeben.

Danke,
Chris
pq
 2008-07-21 13:19
#112371 #112371
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
CPAN:File::Tail
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
GwenDragon
 2008-07-21 13:19
#112372 #112372
User since
2005-01-17
14749 Artikel
Admin1
[Homepage]
user image
Was möchtest du genau tun?
Die letzten 10 Zeilen des Logs aktualisiert in deinem Programm auslesen oder was?


//EDIT: Ja, pq war schneller.
chris-
 2008-07-21 13:25
#112373 #112373
User since
2007-10-18
18 Artikel
BenutzerIn
[default_avatar]
File::Tail klingt schon ganz vielversprechend.

Ich möchte, dass bei dem Scriptaufruf alle Zeilen aus dem Log ausgelesen werden. Postfix schreibt ja dauernd, in die Datei. Nachdem Aufruf sollen auch alle weiteren Zeilen, die postfix noch schreibt, ausgewertet werden.
xiconfjs
 2008-07-21 13:57
#112378 #112378
User since
2006-01-21
79 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hi chris-,

also ich mache das "unschönerweise" immer so:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/perl

use strict;
use warnings;

open(DATEI,"</var/log/system.log");

while(1)
{
        foreach(<DATEI>)
        {
                print $_;
        }
        sleep 1;
}
chris-
 2008-07-21 14:05
#112380 #112380
User since
2007-10-18
18 Artikel
BenutzerIn
[default_avatar]
@xiconfjs
Ich finde die Lösung hat sogar etwas feines, kein extra Modul wird benötigt. (Warum ich nicht auch darauf gekommen bin ... Perl kann ja Pipes und Dateihandles).
<< >> 6 Einträge, 1 Seite



View all threads created 2008-07-21 13:05.