User avatar
rin67630
Posts: 1146
Joined: Fri Mar 04, 2016 10:15 am

Event-Protokolle von UDP Ports automatisch in einer Datei fortschreiben?

Thu Nov 24, 2022 1:22 pm

Hallo,

ich bekomme regelmäßig kurze ASCII Event-Protokolle auf UDP Ports 4322 und 4222 und möchte sie automatisch in 2 Dateien events.log und events1.log fortschreiben.

Es funktioniert, wenn ich ein Terminal aufrufe und

Code: Select all

nc -u -l -p 4222 >> /home/pi/events1.log
eingebe, und ein weiteres Terminal aufrufe und

Code: Select all

nc -u -l -p 4322 >> /home/pi/events.log
eingebe.

Ich darf aber die Terminals nie schließen.

Wie kann ich es erreichen, dass die 2 Aufgaben als Job, der automatisch startet funktionieren?

Es muss nicht netcat sein. Hauptsache die UDP Streams werden protokolliert.

Danke für die Hilfe.
Laszlo

lbog
Posts: 289
Joined: Sun Mar 06, 2016 9:44 am

Re: Event-Protokolle von UDP Ports automatisch in einer Datei fortschreiben?

Sat Nov 26, 2022 8:10 am

rin67630 wrote:
Thu Nov 24, 2022 1:22 pm
ich bekomme regelmäßig kurze ASCII Event-Protokolle auf UDP Ports ...
In welchem Zeitabstand bekommst Du die Event-Protokolle gesendet?

Du könntest die Jobs auch mit einem shell-Script starten und im Hintergrund laufen lassen, und zum starten des shell-Scriptes eine service-unit schreiben und benutzen.

Teste mal in der Kommandozeile mit einer while-Schleife und nohup:

Code: Select all

while true; do {  nohup nc -u -l -p 4222 >> /home/pi/events1.log; } done &
Das Terminal kannst Du schließen. Siehe danach:

Code: Select all

lsof -nPi
ps -fC nc
In der Schleife wird nc nach jedem Datenempfang, neu gestartet und lauscht dann mit einer neuen/anderen PID.
Wenn Du die while-Schleife/nc beenden willst, musst Du die parent-PID von nc feststellen und diese zuerst killen:

Code: Select all

ps -o ppid= $(pidof nc)
d. h.:

Code: Select all

kill -15 $(ps -o ppid= $(pidof nc)) && kill -15 $(pidof nc)

Return to “Deutsch”