Kein Telegram seid RaspberryMatic

Einrichtung, Nutzung und Hilfe zu RaspberryMatic (OCCU auf Raspberry Pi)

Moderatoren: jmaus, Co-Administratoren

Benutzeravatar
jmaus
Beiträge: 9864
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 464 Mal
Danksagung erhalten: 1882 Mal
Kontaktdaten:

Re: Kein Telegram seid RaspberryMatic

Beitrag von jmaus » 04.02.2018, 10:48

Bulli hat geschrieben: ich würde keinen system.exec Aufruf verwenden.
Würdest du mal bitte ausführen warum du kein system.Exec() einsetzen würdest? Seit den aktuellsten Firmwareversionen hat sich system.Exec() intern sehr stark verändert und kann unter anderem mit Pipes (|) und Redirections (>) problemlos umgehen und ehrlich gesagt fällt mir nicht wirklich ein Grund ein warum man für solch trivialen Dinge nicht system.Exec() nutzen sollte (was ich hier ausschliesslich tue in meiner produktiven Umgebung).
Bulli hat geschrieben:
jmaus hat geschrieben: Das hat den Vorteil das durch das angehängte " &" am Schluss der Kommandozeile das system.Exec() komplett im Hintergrund abgearbeitet wird und somit die ReGa nicht für den gesamte Zeitraum der Ausführung blockiert wird und andere Dinge dann parallel weiter erledigen kann.
Wenn du das so machst hast du pro Aufruf einen Zombi Prozess auf deiner CCU oder Raspimatic :!:
Kannst ja mal "googlen" oder einen guten IT Admin Fragen ob solche Prozesse wirklick schön sind.
"Schön" sind sie natürlich nicht, aber auch nicht per se problematisch. Und wenn man sie vermeiden möchte kann man auch einfach noch ein "nohup " vor den eigentlichen Befehl schreiben und dann sollte definitiv auch kein Zombie Prozess mehr übrig bleiben.

Da ich aber merke das es hier anscheinend leider immer noch zwei Lager (für und gegen system.Exec() gibt) wäre es gut zu erfahren wo ihr denn noch weitere Probleme mit der Nutzung von system.Exec() seht. ggf. kann ich ja dadurch noch weitere Optimierungen/Änderungen an system.Exec() vornehmen damit auch diese Dinge beseitigt sind.
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Xel66
Beiträge: 14165
Registriert: 08.05.2013, 23:33
System: Alternative CCU (auf Basis OCCU)
Wohnort: Nordwürttemberg
Hat sich bedankt: 585 Mal
Danksagung erhalten: 1500 Mal

Re: Kein Telegram seid RaspberryMatic

Beitrag von Xel66 » 04.02.2018, 11:56

jmaus hat geschrieben:... wäre es gut zu erfahren wo ihr denn noch weitere Probleme mit der Nutzung von system.Exec() seht.
Ich denke mal, das ist kein Firmware- sondern ein Brainwareproblem. Derartige Statements kommen halt in alten Threads bei der Suche immer wieder hoch und somit ist das etabliertes "Wissen", auch wenn es längst überholt ist (Segen und Fluch der Suchfunktion). Brainware lässt sich nicht so einfach updaten. Dass solch "Wissen" gebetsmühlenartig wiederholt wird und längst nicht mehr der Realität entsprechen muss, kennt man ja auch aus anderen Lebensbereichen.

Gruß Xel66
-------------------------------------------------------------------------------------------
524 Kanäle in 146 Geräten und 267 CUxD-Kanäle in 34 CUxD-Geräten:
343 Programme, 334 Systemvariablen und 183 Direktverknüpfungen,
RaspberryMatic Version: 3.65.11.20221005 + Testsystem: CCU2 2.61.7
-------------------------------------------------------------------------------------------
Einsteigerthread, Programmlogik-Thread, WebUI-Handbuch

Bulli
Beiträge: 494
Registriert: 29.04.2014, 18:38
Hat sich bedankt: 2 Mal
Danksagung erhalten: 9 Mal

Re: Kein Telegram seid RaspberryMatic

Beitrag von Bulli » 05.02.2018, 23:33

Hallo erst mal
@ Alchy bitte mal hier kein Full Q.... entfernen
jmaus hat geschrieben:
Bulli hat geschrieben: ich würde keinen system.exec Aufruf verwenden.
Würdest du mal bitte ausführen warum du kein system.Exec() einsetzen würdest? Seit den aktuellsten Firmwareversionen hat sich system.Exec() intern sehr stark verändert und kann unter anderem mit Pipes (|) und Redirections (>) problemlos umgehen und ehrlich gesagt fällt mir nicht wirklich ein Grund ein warum man für solch trivialen Dinge nicht system.Exec() nutzen sollte (was ich hier ausschliesslich tue in meiner produktiven Umgebung).
Bulli hat geschrieben:
jmaus hat geschrieben: Das hat den Vorteil das durch das angehängte " &" am Schluss der Kommandozeile das system.Exec() komplett im Hintergrund abgearbeitet wird und somit die ReGa nicht für den gesamte Zeitraum der Ausführung blockiert wird und andere Dinge dann parallel weiter erledigen kann.
Wenn du das so machst hast du pro Aufruf einen Zombi Prozess auf deiner CCU oder Raspimatic :!:
Kannst ja mal "googlen" oder einen guten IT Admin Fragen ob solche Prozesse wirklick schön sind.
"Schön" sind sie natürlich nicht, aber auch nicht per se problematisch. Und wenn man sie vermeiden möchte kann man auch einfach noch ein "nohup " vor den eigentlichen Befehl schreiben und dann sollte definitiv auch kein Zombie Prozess mehr übrig bleiben.

Da ich aber merke das es hier anscheinend leider immer noch zwei Lager (für und gegen system.Exec() gibt) wäre es gut zu erfahren wo ihr denn noch weitere Probleme mit der Nutzung von system.Exec() seht. ggf. kann ich ja dadurch noch weitere Optimierungen/Änderungen an system.Exec() vornehmen damit auch diese Dinge beseitigt sind.
Es gibt für mich keine 2 Lager system.exec oder nicht. Ich persönlich kenne keinen hier im Forum. Es geht mir nur um die Sache. Fakt ist das dein Beträg 7 in diesen Thread Zombis erzeugt. nohup ist neu und Klammer ich erst mal aus.
@Xel66 so mal getestet? Wir reden hier nicht über altes Wissen sondern um die aktuelle Firmware.

Gruß
Bulli

@Jens tolle Arbeit "ehrlich ohne hintergedanken"

Antworten

Zurück zu „RaspberryMatic“