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
lass das "-f" weg, dann gehts. Ansonsten gibt's laut Specs keine Möglichkeit zu prüfen, ob die Verbindung besteht.
Dann geht's insofern, dass das Script korrekt beendet wird - die Verbindung sowie die Übertragung neu eintreffender Daten aber leider auch.
Natürlich. Aber wie wär's mit diesem Workaround: #!/bin/sh killall tail tail -f /pfad/zur/datei dann hast du nur ein "tail", das nicht beendet wird.
Evtl. hätte ich erwähnen sollen, dass auch mehrere Clients gleichzeitig verbunden sein können.
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 -----
Die 1 sollte wohl ein ! sein, aber wie auch immer: Spitze! So funktioniert's... Vielen Dank euch beiden! Tobias
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.