inetd + script

Gast #1689909
Lesenswert?

Hallo Linuxer,

habe hier eine Telefonanlage, die per RS232 mit einem Linuxrechner 
verbunden ist, der alle von ihr empfangenen ASCII-Zeilen in eine Datei 
schreibt. Nun möchte ich den Inhalt dieser Datei über einen TCP-Port 
abrufbar machen. Die Verbindung soll nach Übertragung der Datei bestehen 
bleiben. Sobald neue Zeilen in die Datei geschrieben werden, sollen 
diese parallel dazu über die TCP-Verbindung geschickt werden. Dazu habe 
ich ein Script erstellt, das eigentlich nur aus

#!/bin/sh
tail -f /pfad/zur/datei

besteht. In /etc/services habe ich einen neuen Service-Namen zusammen 
mit einer Portnummer festgelegt. In /etc/inetd.conf habe ich den 
Service-Namen mit obigem Script verknüpft.

Im Prinzip funktioniert auch alles wunderbar. Das Problem ist nun, dass 
nach einem Trennen der Verbindung durch den Client das Script bzw. tail 
offenbar nicht beendet wird. Es schadet zwar nicht der Funktion, nur 
wird die Prozessliste mit der Zeit voller und voller. Hat jemand eine 
Idee, wie man eine Trennung der TCP-Verbindung feststellen und das 
Script möglichst elegant beenden kann? Oder gibt es generell eine 
bessere Lösung für mein Vorhaben? Vielen Dank!

Tobias
Gast #1693240
Lesenswert?

Nicht im inetd getestet, aber vielleicht gehts so:

-----
#!/bin/bash
# Im Hintergrund das Tail
tail -f /tmp/watchme.log > /dev/tty &
# Im Vordergrund warten auf EOF
cat > /dev/null
# und dann killen.
kill %1
-----

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren