FHEM / Notify führt plötzlich keine System-Befehle mehr aus?

Begonnen von Klaus0815, 24 Juli 2018, 14:40:28

Vorheriges Thema - Nächstes Thema

Klaus0815

Ich rufe über verschiedene notify mehrere verschiedene Bashscripte auf,

ein Beispiel:
{ system("/var/test/bewegungsmelder/flur_keller&") }

Das Ganze hat über Monate und Jahre funktioniert, jetzt seit ein paar Wochen das Problem das nach 3-5 Tagen der Aufruf nicht mehr erfolgt
Ein Neustart von FHEM reicht nicht, ich muss den Server neu starten damit es wieder funktioniert.

Wo fange ich am Besten an zu suchen?

Meine bisherigen Tests:

das Bash-Script direkt gestartet mit
./flur_keller
funktioniert

in FHEM oben in die Eingabezeile folgendes eingegeben:
{ system("/var/kr/bewegungsmelder/flur_keller&") }
Rückmeldung ist "-1 - Das Bash-Script wird nicht ausgeführt

Ein kleines Testprogramm perltest.pl angelegt, Inhalt:
#!/usr/bin/perl
    use strict;
    use warnings;
    { system("/var/kr/bewegungsmelder/flur_keller&") }

funktioniert, das Bash-Script wird gestartet

Wie kann ich den Fehler am Besten eingrenzen?

Kleine Anmerkung noch- FHEM läuft unter User root, ich weiss das soll man eigentlich nicht tun, ist seit Jahren so, und auf dem Pi läuft auch sonst nichts groß anderes
Zugriffsrechte kann ich also somit ausschließen

Viele Grüße
Klaus







CoolTux

Gib mal das oben in die FHEMWEB Kommandozeile ein

"/var/kr/bewegungsmelder/flur_keller"
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Otto123

Hallo Klaus,

in Ergänzung zu Cooltux:
oder auch "bash /var/kr/bewegungsmelder/flur_keller"
Aber mir klingt es eher danach, als ob im Script was nicht mehr läuft.
Zitat von: Klaus0815 am 24 Juli 2018, 14:40:28

Kleine Anmerkung noch- FHEM läuft unter User root, ich weiss das soll man eigentlich nicht tun, ist seit Jahren so, und auf dem Pi läuft auch sonst nichts groß anderes
Zugriffsrechte kann ich also somit ausschließen

Ist das wirklich so? root ist am Ende auch bloß ein User und keine Gott  ;)...

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Klaus0815

Muss jetzt leider / zum Glück wieder paar Tage warten , hab heute den Server neu gebootet

Aber ich halte Euch auf dem laufenden - wie kann so was kommen das es immer nach paar Tagen Auftritt?
Habe sogar den Eindruck es tritt immer gegen 22 Uhr auf.
Im Notify-Konstrukt kann ich aber Eure Vorschläge so nicht einsetzen - da brauche ich das "system" ?


ZitatIst das wirklich so? root ist am Ende auch bloß ein User und keine Gott  ;)...
So ungefähr habe ich mir das auch gedacht, wenn ich was machen will dann tue ich das, egal ob direkt als root oder indem ich anderen Usern die entsprechenden Rechte gebe

Otto123

#4
Du kannst es immer so machen, das ist sogar die bevorzugte Variante.
https://commandref.fhem.de/commandref_DE.html#command
ZitatSHELL-Kommandos werden im Hintergrund ausgeführt,
Da hat sich Rudi schon sehr lange, viel Mühe gegeben :)

Das mit den Tagen klingt für mich so, als ob etwas voll oder über läuft. Hast Du SYSMON am laufen und kannst mal den Hauptspeicher beobachten?

Oder etwas "verhakt" sich - um 22:00 Uhr. Also ein Prozess bleibt klemmen und Du kommst über Dein Script dann nicht mehr ran?
Du kannst etwas debugging im Script einbauen, z.B. Log schreiben nach jedem Schritt oder so.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

helmut

Zitat von: Klaus0815 am 24 Juli 2018, 14:40:28
Kleine Anmerkung noch- FHEM läuft unter User root, ich weiss das soll man eigentlich nicht tun, ist seit Jahren so, und auf dem Pi läuft auch sonst nichts groß anderes
Zugriffsrechte kann ich also somit ausschließen

Ist das wirklich so? In der fhem.pl soll bei vorhandenem Benutzer fhem umgeschaltet werden:
Zitat# If started as root, and there is a fhem user in the /etc/passwd, su to it

Den aktiven Benutzer kannst Du ermitteln, wenn Du im Web- oder Telnet-Interface "{qx(id)}" oder "{`id`}" eingibst.
Im Gegensatz zu system liefern diese gleichwertigen Kommandos den Wert von STDOUT zurueck.

system soll eigentlich den exit Status des ausgefuehrten Kommandos abliefern, bringt aber immer -1, wie z.B. "{system("id")}".
Das war schon mehrfach Thema im Forum aber ich habe noch keine rechte Erklaerung fuer das Verhalten gesehen.

Gruss Helmut
Intelligenz ist die Fähigkeit, Arbeit zu vermeiden, aber dafür zu sorgen, daß die Arbeit gemacht wird.
(Linus Torvalds)

Klaus0815

ZitatIst das wirklich so? In der fhem.pl soll bei vorhandenem Benutzer fhem umgeschaltet werden:
Den aktiven Benutzer kannst Du ermitteln, wenn Du im Web- oder Telnet-Interface "{qx(id)}" oder "{`id`}" eingibst. 

Als Antwort kommt:
uid=0(root) gid=0(root) Gruppen=0(root)

Das man mittlerweile Shell-Skripte direkt aufrufen kann wusste ich nicht, danke für den Tip
Den System-Befehl hatte ich ewig drin, und dann halt immer weiter notifies damit erstellt

ZitatDas mit den Tagen klingt für mich so, als ob etwas voll oder über läuft. Hast Du SYSMON am laufen und kannst mal den Hauptspeicher beobachten?

Oder etwas "verhakt" sich - um 22:00 Uhr. Also ein Prozess bleibt klemmen und Du kommst über Dein Script dann nicht mehr ran?

Das ist ja das merkwürdige, die Bash Scripts sind jeweils nur ein paar Zeilen die auf den Voklszaehler loggen, auch sonst habe ich keine zeitrelevanten Ereignisse

Am Meisten wundert mich, das es über Jahre so lief, jetzt plützlich das Problem auftritt, und ich nicht wirklich was geändert habe

Viele Grüße

Klaus

helmut

Hallo Klaus,

was passiert denn, wenn Du das Skript mit den Backtics oder qx aufrufst? Dann wird es doch ausgefuehrt, oder?
Zwei ganz dumme Fragen noch: Hast Du im fhem-Log zum entsprechenden Zeitpunkt nach Fehlern gesucht und
schon mal den verbosity-Level Deiner notifys auf 5 gesetzt?

Gruss Helmut

Intelligenz ist die Fähigkeit, Arbeit zu vermeiden, aber dafür zu sorgen, daß die Arbeit gemacht wird.
(Linus Torvalds)

Klaus0815

#8
Hallo Helmut,

Zitatwas passiert denn, wenn Du das Skript mit den Backtics oder qx aufrufst? Dann wird es doch ausgefuehrt, oder?

Muss jetzt erst mal wieder paar Tage warten bis es nicht mehr geht, hatte heute den Server neu gestartet

ZitatHast Du im fhem-Log zum entsprechenden Zeitpunkt nach Fehlern gesucht
Ja, leider nichts zu sehen

Zitatschon mal den verbosity-Level Deiner notifys auf 5 gesetzt?

Das wäre dann der nächste Schritt

Denke aber nicht, das es was mit notify zu tun hat - es wird ja auch nicht in der Eingabezeile von der FHEM-Weboberfläche ausgeführt

Am Meisten wundert mich das sogar ein Neustart von FHEM nichts bringt

ABer Eure Tipps haben mir auf alle Fälle schon mal Richtungen vorgegeben wo ich weiter suchen kann

Beim Start von FHEM kommt übrigens
Protect this FHEM installation by defining an allowed device with define allowed allowed
Running with root privileges is discouraged.
You can disable this message with attr global motd none


Wofür steht das discouraged? Nicht empfehlenswert? Kannte bisher nur die Übersetzung "mutlos"


Viele Grüße und vielen Dank

Klaus

Otto123

Naja, die stupide Verwendung von root hat doch was von Resignation  ;D
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

helmut

Zitat von: Otto123 am 24 Juli 2018, 22:52:57
Naja, die stupide Verwendung von root hat doch was von Resignation  ;D
Ach Otto, nun sei mal nicht so streng ;-)

Hier ist, nicht nur fuer Debian, beschrieben, wie der Benutzer fhem von Hand angelegt werden kann:
https://debian.fhem.de/

Und Klaus, denk mal ueber Ottos Vorschlag mit sysmon nach.

Gruss Helmut
Intelligenz ist die Fähigkeit, Arbeit zu vermeiden, aber dafür zu sorgen, daß die Arbeit gemacht wird.
(Linus Torvalds)

Klaus0815

Es wird immer merkwürdiger:

Notifys gingen wieder nicht, Bewgungsmelder hatte aber ausgelöst

Eure Vorschläge mit z,B,
"bash /var/kr/bewegungsmelder/flur_keller"
oder
"/var/kr/bewegungsmelder/flur_keller"

brachten auch nichts, keine Reaktion
Im FHEM-Log sind keine Fehler zu sehen

Aber: habe ein weiterse Notify, auf einen MySensors-Sender ( Abfrage der Autobatterie)
Batterie_Z3.voltage1:.* { system("/var/kr/batterie_z3/batterie&") }

Der ist ganz normal weiter gelaufen / hat funktioniert

Habe jetzt mal nur FHEM neu gestartet, kein Server-Reset, jetzt gehen wieder alle Notifys

Im FHEM-Log steht nichts verdächtiges, ein Aufruf in der Debian-Konsole startet das Bash-Script ohne Probleme





helmut

Zitat von: Klaus0815 am 28 Juli 2018, 20:55:08
Im FHEM-Log sind keine Fehler zu sehen
[...]
Habe jetzt mal nur FHEM neu gestartet, kein Server-Reset, jetzt gehen wieder alle Notifys

Hallo Klaus,

dass Du im Log nichts siehst, passt zwar nicht genau zu diesem Thread
https://forum.fhem.de/index.php/topic,84372.msg787528.html#msg787528
aber es sieht trotz alledem nach Speicherproblemen aus.

Da ich auch das Problem habe, dass nach ungefaehr zwei Wochen der Wert von VmData einen Wert erreicht bei dem ich
diesen Fehler (Cannot fork: Cannot allocate memory) sehe, lasse ich mir diesen Wert alle fuenf Minuten in die Datenbank
schreiben und zeige ihn zusammen mit der Auslastung des RAM im SYSMON an. Beide Werte steigen genauso parallel
wie kontinuierlich an.

Der oben genannte Thread lebt noch, eine Loesung ist leider nicht in Sicht.

Bitte greife doch Ottos Vorschlag mit SYSMON auf und beobachte parallel dazu den Wert von VmData.

Gruss Helmut
Intelligenz ist die Fähigkeit, Arbeit zu vermeiden, aber dafür zu sorgen, daß die Arbeit gemacht wird.
(Linus Torvalds)