Brauche mal dringend eure Hilfe.
Habe meinen Server neu aufgesetzt mit Ubuntu 14.04.3 LTS 64Bit.
Alles soweit läuft wieder ohne Probleme.
Nur der HM USB Stick mit HMLAND als Service macht beim FHEM RESTART Probleme.
Wenn ich unter Ubuntu CLI mit "service fhem restart" restarte geht alles sauber und HMLAND restartet auch sauber mit.
Wenn ich aber unter FHEM Kommandozeile "shutdown restart" bleibt der HMLAND im Status shutdown/waiting.
Das hat aber mit der gleichen Konfig unter dem alten Ubuntu immer ohne Probleme geklappt.
Ich starte/stoppe etc. HMLAND doch im Script in Abhängigkeit mit FHEM.
Scheint so als ob HMLAND den STOP zwar mitbekommt, aber den START nicht.
Was ist daran falsch, dass es in der neuen Ubuntu Version nicht mehr geht.
Hier meine beiden /etc/init/ conf-Files für FHEM und HMLAND.
# FHEM Service
description "fhem server"
author "Rudolf Koenig <r.koenig@koeniglich.de>"
start on (net-device-up
and local-filesystems
and runlevel [2345])
stop on runlevel [016]
expect fork
respawn
chdir /opt/fhem
exec perl fhem.pl fhem.cfg
# HMLAND
description "hmland"
start on starting fhem
stop on stopped fhem
respawn
expect fork
chdir /opt/hmcfgusb
exec /opt/hmcfgusb/hmland -d -l 127.0.0.1 -p 1234
Evtl. ist das Thema unter Server -Linux besser aufgehoben.
Kann es bitte dorthin verschoben werden?
Danke.
Verschieben kann der TE doch selber :)
VG
Frank
Zitat von: franky08 am 21 Februar 2016, 23:16:41
Verschieben kann der TE doch selber :)
VG
Frank
Ich wüsste nicht wie!
Habe nirgends die Möglichkeit gefunden.
Da, siehe Screenshot:
VG
Frank
Ich hoffe, hier im Linux Server Unterforum könnt ihr mir weiterhelfen.
Bei einem "fhem restart" wird der hmlan nicht neu gestartet,. warum sollte denn das System dieses tuen?
Bei der CLI ist es klar. Da erledigt es der systemd. Aber wenn das Progi (fhem) es auslöst, wie soll der systemd s mitbkommen?
Oder liege ich falsch?
Zitat von: Wernieman am 22 Februar 2016, 10:46:57
Bei einem "fhem restart" wird der hmlan nicht neu gestartet,. warum sollte denn das System dieses tuen?
Bei der CLI ist es klar. Da erledigt es der systemd. Aber wenn das Progi (fhem) es auslöst, wie soll der systemd s mitbkommen?
Oder liege ich falsch?
Ja k.A. was genau im Hintergrund abläuft, wenn man im FHEM "shutdown restart" ausführt.
Anscheinend nicht "service fhem restart", sonst wäre das Problem nicht.
Wenn der HMLAND aber in den Service fhem gekoppelt ist, dann wird doch auch dieser beim Neustart dies mit bekommen und sich restarten.
So der Plan bzw. in meinem alten Ubuntu 12 kein Problem gewesen.
Sofern ich weiß, macht es fhem eben nicht über /etc/init.d bzw. systemd, sondern in dem es sich selber forkt und beende ...... o.Ä. Zum genauen Verständnis bitte einen Programmierer fragen.
Da fhem sich normal beendet, warum sollte systemd dann den hmland dann starten?
Mal eine andere Frage (da ich Ihn nicht habe), muß der hmlan über User root laufen? oder reicht als user auch fhem?
HMLAND läuft bei mir nicht als root.
Aber warum wird dann HMLAND runtergefahren, wenn shutdown restart das über systemd macht?
Weil die PID von fhem sich Ändert ...
stop on stopped fhem
Edit:
Kannst Du hmlan nicht durch fhem starten lassen?
Zitat von: Wernieman am 22 Februar 2016, 11:37:34
Weil die PID von fhem sich Ändert ...
stop on stopped fhem
Edit:
Kannst Du hmlan nicht durch fhem starten lassen?
Mache ich ja in der HMLAND.CONF.
Wird durch FHEM gestartet und gestoppt.
Oder meinst du direkt heraus aus FHEM, wenn er durchgestartet ist?
Ob das aber so gute Idee ist, weiß ich nicht.
Komisch, dass es aber mit Ubuntu 12 ohne Probleme mit der gleichen Konfig ging.
Hallo, ich hatte damals, als ich den hmusb noch eingebunden hatte, hmland in der init.d/fhem gestartet.So wie im WIKI beschrieben:
ZitatStart über Fhem Startskript
Ausprobiert auf einem BBB mit Debian, eigentlich ist das alles von Betateilchen:
Zunächst hmland kompilieren wie oben beschrieben, bis zum make. Das muss erfolgreich durchgelaufen sein.
Dann geht es weiter:
sudo cp hmcfgusb.rules /etc/udev/rules.d/
Jetzt das Fhem Startskript anpassen (in den Blöcken 'start' und 'stop' muss quasi nur jeweils 1 Zeile eingefügt werden:
Damit editiert man das Fhem Startskript:
sudo nano /etc/init.d/fhem
Und so sollten die Blöcke anschließend aussehen (bitte nur jeweils die Zeile mit hmland einfügen)
'start')
echo "Starting fhem..."
/opt/hmcfgusb/hmland -d -p 1234
perl fhem.pl fhem.cfg
RETVAL=$?
;;
'stop')
echo "Stopping fhem..."
perl fhem.pl $port "shutdown"
RETVAL=$?
pkill hmland
So wird hmland vor Fhem gestartet und nach Fhem beendet. Letztlich erspart es Probleme mit den diversen Startskripten und ihren Rechten.
Es dauert nach dem Start von Fhem noch einige Sekunden, bis hmland fertig geladen ist. In dieser Zeit kann es zu fehlerhaften Einträgen im Logfile kommen.
VG
Frank
Vor 14.04 dürfte Dein hmlan nicht beendet worden sein, wenn sich fhem beendet hat.
Für systemd sieht aber dein "fhem shutdown restart" aber wie ein normaler shutdown aus, d.h. hmlan wird beendet. Das sich aber fhem wieder startet (neue PID), sieht der systemd nicht, deshalb wird der hmlan nicht gestartet ... jedenfalls meiner Meinung nach.
Nur wie schon geschrieben:
Bin kein systemd Spezialist
Zitat von: Wernieman am 22 Februar 2016, 13:25:32
Vor 14.04 dürfte Dein hmlan nicht beendet worden sein, wenn sich fhem beendet hat.
Für systemd sieht aber dein "fhem shutdown restart" aber wie ein normaler shutdown aus, d.h. hmlan wird beendet. Das sich aber fhem wieder startet (neue PID), sieht der systemd nicht, deshalb wird der hmlan nicht gestartet ... jedenfalls meiner Meinung nach.
Nur wie schon geschrieben:
Bin kein systemd Spezialist
D.h. vorher gabs nur upstart und ab 14.04 gibts parallel dazu systemd?
Bin nur mit gefährlichen Halbwissen in Linux dabei, wie ihr merkt.
Vorher gab es ein init nach System V. upstart war sehr daran orientiert, zu einem reinen Ereignis Orientierten Init-System hätte man noch spezielle Variablen setzen müssen.
Mein Wissen darüber ist allerdings auch nicht 100% Wasserdicht ;o)
P.S. eigentlich gibt es ein richtiges systemd erst ab 15.04 .... aber wenn Du in 14.04 den systemd konfigurierst ...