Neuigkeiten:

Am Sonntag den 8.12.2024 kann es ab ca. 8:00 Uhr zu kurzzeitigen Einschränkungen / Ausfällen bei den Diensten des FHEM Vereines kommen.
Die Server müssen mal gewartet und dabei neu gestartet werden ;)

Hauptmenü

LaunchDaemon, nofork und System-Calls via system

Begonnen von knueppler, 27 Juli 2021, 20:22:23

Vorheriges Thema - Nächstes Thema

knueppler

Hallo zusammen,

momentan läuft mein FHEM auf einem MacMini M1.
Ich habe es auch via launchd zum Laufen bekommen, allerdings muss ich da nofork=1 setzen.
Sobald ich das tue, kommen Aufrufe a la system("ls") nicht mehr zurück, sprich, Kommando wird noch ausgeführt, aber dann ist Schluss, keine Response mehr. Dies egal, ob ich FHEM via launchd oder via Kommando-Zeile starte.
Lösche ich das Attribut nofork, dann kommen die System-Calls wieder zurück, aber launchd mag nicht mehr, somit muss ich wieder von Kommando-Zeile starten.
Hat einer ne Idee für mich?

Danke, Christian

rudolfkoenig

ZitatIch habe es auch via launchd zum Laufen bekommen, allerdings muss ich da nofork=1 setzen.
Ist damit ein launchd Attribut oder das FHEM Attribut (https://fhem.de/commandref_modular.html#nofork) gemeint?

knueppler

Guten Morgen,

mit nofork ist das FHEM-Attribut gemeint.

Ciao Christian

rudolfkoenig

Dieses Attribut verhindert, dass FHEM beim Starten sich als Daemon ins Hintergrund verabschiedet.
Es hat keine Auswirkungen bei weiteren Fork-Operationen, und wenn doch, dann indirekt.
Ich vermute/hoffe, dass die Ursache in FHEM-Log protokolliert ist.
Wird ein native-perl verwendet?

knueppler

Hi,

ja, native, welches von Apple mit ausgeliefert wird.
Teststellung auf nem MacBookPro M1 zeigen ein anderes Verhalten.
Mit NOFORK=1 kommt system mit -1 zurück, mit NOFORK=0 mit 0.
Im Log der anderen Installation sehe ich leider nix, wenn FHEM nach dem system-Call nicht mehr zurück kommt.
Ich gucke weiter.

Ciao Christian

rudolfkoenig

ZitatMit NOFORK=1 kommt system mit -1 zurück, mit NOFORK=0 mit 0.
Ich wuerde FHEM mit nofork 1 starten, und in der Eingebezeile
{ system("/bin/ls") && $! }
eingeben. Zurueckkommen sollte ERRNO im Klartext, was wiederum weiterhelfen koennte.

knueppler

Hallo,

ich habe mal auf der Installation, auf der das passiert, ein wenig rumgespielt:

  • NOFORK=1
  • start von der Kommandozeile mit perl fhem.pl fhem.cfg
  • Kommando in FHEM wie beschrieben abgesetzt
  • Im Logfile erscheint das Directory-Listing
  • FHEM-Oberfläche friert ein
  • CTRL-C in dem Kommando-Fenster
  • FHEM läuft teilweise wieder an
  • Meldung im Browserfenster no childprocess
Momentan vermute ich, dass es mit irgendwelchen Restriktionen in OSX zu tun hat. Allerdings sind an der Stelle beide Maschinen über die Systemsteuerung gleich konfiguriert.