Ankündigung

Einklappen
Keine Ankündigung bisher.

Daemon über Shell-Befehl starten (ebusd)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Daemon über Shell-Befehl starten (ebusd)

    Hallo Zusammen,

    nach gefühlten Jahren habe ich mal wieder eine Herausforderung: Da edomi mittlerweile meine Heizungssteuerung über den eBus übernommen hat, muss das natürlich robust sein. Ausgerechnet während einer Geschäftsreise hat der eBus Koppler nicht mehr reagiert und es wurde ein wenig kalt im Haus ;-)
    In so einem Fall hilft bisher nur:
    • eBus Dämon stoppen (/etc/init.d/ebusd stop)
    • eBus Koppler über Schaltaktor aus- und wieder einschalten
    • eBus Dämon starten (/etc/init.d/ebusd start)
    Also habe ich eine Erkennung für Stillstand gebaut, obige Befehle in eine Sequenz gepackt starte diese bis zu 3x bis es läuft.

    Jetzt das Problem: Beim Stoppen wird der Prozess gestoppt, leider nicht das PID File. Wenn ich das manuell lösche, startet der Prozess, aber ein die falsche Prozess ID wird ins PID File geschrieben :-( Auf der Konsole funktioniert alles.

    Sind Shell Befehle dafür gedacht oder muss ich es auf anderem Wege ausführen?

    Viele Grüße,
    Patrick

    #2
    Kleine Korrektur: Nach Update auf 1.64 wurde erkannt, dass der eBus Dämon nicht läuft und die obige Sequenz angestoßen. Es wird ein PID File erzeugt, darin eine ID, die es nicht gibt (sudo ps aux ...), der Prozess aber nicht gestartet.
    Falls jemand eine Idee hat, würde ich mich freuen.

    Kommentar


      #3
      Wie stellst du denn fest, dass der ebus Daemon nicht mehr läuft?
      Läuft er wirklich nicht mehr oder reagiert er nur nicht, weil er sich aufgehängt hat?

      Könntest auch mal versuchen deinen Shell Befehlen ein "/bin/bash -c" voranzustellen.
      Hast du eine ausreichende Wartezeit nach dem Powercycle und dem Starten des ebusd? Evtl. ist das Gerät noch nicht bereit.

      Kommentar


        #4
        Besten Dank für den Tipp - hilft leider nicht. Falls Du weitere Ideen hast, würde ich mich freuen.

        Zitat von jonofe Beitrag anzeigen
        Wie stellst du denn fest, dass der ebus Daemon nicht mehr läuft?
        sudo ps aux | grep ebusd

        Zitat von jonofe Beitrag anzeigen
        Läuft er wirklich nicht mehr oder reagiert er nur nicht, weil er sich aufgehängt hat?
        Der ebusd läuft und läuft und läuft erhält jedoch keine Rückmeldung mehr vom eBus Koppler. Diesen muss ich alle Nase lang (6-12 Monate) durchstarten. Damit sich der ebusd im Anschluss wieder verbindet, muss ich diesen auch neustarten. Die Sequenz oben mache ich bisher manuell...

        Zitat von jonofe Beitrag anzeigen
        Könntest auch mal versuchen deinen Shell Befehlen ein "/bin/bash -c" voranzustellen.
        Habe ich gerade, hilft leider nicht (s. unten).

        Zitat von jonofe Beitrag anzeigen
        Hast du eine ausreichende Wartezeit nach dem Powercycle und dem Starten des ebusd? Evtl. ist das Gerät noch nicht bereit.
        Nach dem Stoppen 10s, dann Ausschalten wieder 10s, Einschalten 60s, dann ebusd starten...

        Das Aus-/Einschalten habe ich zum Testen mal aus der Sequenz genommen - das funktioniert ja.
        Jetzt teste ich gerade ein wenig. Unten auch mal ein paar Screenshots.

        Viele Grüße,
        Patrick

        So passiert gar nichts:

        Bildschirmfoto 2019-03-21 um 15.10.50.png

        So wird das PID File gelöscht (Aus dem stop Befehl), ein Neues mit neuer ID erstellt (aus dem start Befehl), aber der Service nicht gestoppt (also genau wie vorher ohne /bin/bash -c):

        Bildschirmfoto 2019-03-21 um 15.18.22.png

        Und hier von der Konsole:

        Bildschirmfoto 2019-03-21 um 15.21.10.png
        Angehängte Dateien

        Kommentar


          #5
          Dann würde ich es mal mit dem Hammer versuchen:

          Sequenz:

          Code:
          /etc/init.d/ebusd stop [COLOR=#0000CD]# 3 Sekunden Pause[/COLOR]
          /usr/bin/pkill -15 ebusd [COLOR=#0000CD]# 3 Sekunden Pause[/COLOR]
          /usr/bin/pkill -9 ebusd [COLOR=#0000CD]# 1 Sekunde Pause[/COLOR]
          rm /var/run/ebusd.pid
          /etc/init.d/ebusd start

          Kommentar


            #6
            So, ich habe es mit Anpassungen im Skript geschafft:

            An den Anfang ein PATH="$PATH:/usr/local/bin" und beim kill Kommando -9 statt -HUP aus der Skriptvorlage.
            Beides funktionierte übrigens über SSH, so dass ich keinen Fehler gefunden habe.

            Trotzdem nutze ich jetzt den Baustein 19000559, da ich dort auch eine Ausgabe habe (und so den Fehler gefunden habe).
            So kann ich auch anhand der Ausgabe von "/etc/init.d/ebusd status" prüfen, ob der daemon läuft :-)

            Vielen lieben Dank trotzdem!

            Kommentar

            Lädt...
            X