Corba-MMIMS
Left Up Right Corbammims

fifo2ev

Zweck

fifo2ev überwacht mehrere Fifos oder Dateien und schickt die gelesenen Zeilen über den Eventchannel mit dem Namen "syslog".

Damit kann der Corba-Mimmsfreund wie mit tail(1) verschiedene herkömmliche Logdateien überwachen.

Aufruf

fifo2ev [-v] Beschreibungsdatei

Syntax der Eingabedatei

Kommentarzeilen
beginnen mit #
Spezifikationszeilen
haben das Format
pfad facility programm pid prio
wobei
pfad
Name der zu Überwachenden Datei oder Fifo
facility
Kategorie der Datei
prog
Name des Programms
pid
Prozeßnummer des Deamons. Falls -1, wird die Pid von fifo2ev eingesetzt.
Priority
Hier wird
Alert action must be taken immediately
Crit critical conditions
Err error condition
Warning warning Condition
Notice normal, but significant, condition
Info informational message
Debug debug message
erwartet.
Beispiel:
# fifo2ev
# Überwache messages und mail
# path           facility prog pid  prio
#-----------------------------------------
/var/log/messages sys messages  -1  Notice
/var/log/mail	mail mail -1 Notice

Technische Bemerkungen

Ein großes Lob für die Polymorphie des UNIX-Dateikonzepts: So kann fifo2ev sowohl auf fifos als auch auf gewönliche Dateien angewandt werden, weil dies in den Systemcalls keinen Unterschied macht.

Die Dateien/Fifos werden mit O_NONBLOCK geöffnet. So blockiert das open(2) nicht, wenn kein Schreiber da ist.

Wenn das read(2) 0 liefert, heißt dieses, daß das Dateiende erreicht wurde. Dieses wiederholt sich, bis an die Datei angefügt wird. (Es wäre ja denkbar, daß der Descriptor auf nicht lesebereit gesetzt würde, es ist aber so.) Aus diesem Grunde wird die Callback-Struktur in diesem Fall aus der Lese-Ereignissen das Dispatchers entfernt und mit einer Zeit von 5 Sekunden in die Zeitereignisschlange eingereiht. Nachdem die Zeit abgelaufen ist, wird wieder ein lesen versucht. Ist dieses Erfolgreicht, so wird die Callback-Struktur wieder in die Lese-Ereigniswarteschlange des Dispatchers eingefügt.

Bei MICO werden nach Eintreten des Zeitereignises automatisch die Callback-Struktur aus der Warteschange entfernt. (Eine Alternative findet man bei Qt, dort kann man angeben, ob man ein Ereignis einmalig oder periodisch haben möchte, wobei man eben bei MICO periodische Zeitereignisse dadurch erreicht, daß man bei eintreten eines Ereignisses gliech wieder ein neues bestellt).

Beispielsweise bei UUCP brauchen wir das Merkmal, daß die Logdatei immer wieder durch Instanzen geöffnet und danach wieder geschlossen werden kann.

Fifos (named Pipes) erzeugt man mit
mkfifo Dateiname
oder mit
mknod Dateiname p

Ideen für Verschönerungen

Die Zeit sowie andere Parameter des Syslogs sollten aus der gelesenen Zeilen extrahiert werden.
Alternativ könnte man z.B. bei syslog-Dateien ein Präfix abschneiden.
Rudolf Weber Informatik- und Netzwerkverein Ravensburg e.V