Start-Reihenfolge daemon/systemd

Einklappen
X
 
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge
  • olicat
    MS Profi
    • 25.08.2015
    • 547

    Start-Reihenfolge daemon/systemd

    Moin!

    Kann kurz jemand etwas zur Reihenfolge beim Start des LoxBerry mitteilen?
    An welcher Stelle werden etwaige Scripte im daemon-Verzeichnis eines Plugins gestartet?
    Vor systemd - mit systemd oder danach?

    Ein daemon-Script mit Endlosschleife scheint bei einem Plugin die Weiterverarbeitung von systemd-Diensten zu behindern.
    Auf einem System ohne daemon-Script zeigt ein
    Code:
    who -r
    den korrekten runlevel - auf einer Maschine mit dem daemon-Script des Plugins und der darin enthaltenen Endlosschleife (while True) einfach nix.
    Etliche Programme, die normalerweise per sudo gestartet werden koennen, funktionieren nicht, weil die erforderlichen Rechte fehlen:
    Code:
    loxberry@last-loxberry:/root $ sudo who -r
    [sudo] password for loxberry:
    Sorry, user loxberry is not allowed to execute /usr/bin/who -r as root on last-loxberry.
    Ich habe den Eindruck, das erst die Plugin-daemons (direkt nach dem Boot) gestartet werden und ein /etc/init.d/sudo erst nachtraeglich kommen soll, wobei aufgrund der Endlosschleife des daemon-Scriptes das Script aber ueberhaupt nicht gestartet wird.

    Die systemrelevanten Dinge sollten meiner Meinung nach VOR jeglichen LoxBerry-Plugins gestartet werden, um ein konsistentes System sicherzustellen.
    Kann mir jemand folgen?
    ;-)

    Problem-Plugin: https://www.loxwiki.eu/display/LOXBERRY/Power+Button
    LoxBerry: v2.2.0.4

    Ich werde dem Plugin-Autor bitten, das Plugin auf systemd umzustellen.
    Aber grundsaetzlich ist doch der daemon-Ordner genau fuer solche Art von Scripten gedacht, oder?

    Gruss, Oliver
  • Iksi
    Lox Guru
    • 27.08.2015
    • 1111

    #2
    Hmm, dachte an sich auch das wäre okay so, wie ich das gemacht habe. Dann muss ich mich wohl mal mit systemd auseinander setzen.
    Gibt es da ne gute Anleitung oder so, wie ich das als Plugin erstellen kann...

    Kommentar

    • Christian Fenzl
      Lebende Foren Legende
      • 31.08.2015
      • 11217

      #3
      Einen Bug habe ich dafür schon kürzlich erfasst: https://github.com/mschlenstedt/Loxberry/issues/1207
      Ein Daemon-Script muss zurückkommen, sonst bleibt alles stehen.

      Die Reihenfolge weiß ich nicht genau, ich weiß nur, dass wir unseren eigenen systemd Dienst haben, worin die Daemon-Scripts gestartet werden.

      Reihenfolge : Prof.Mobilux ?
      ​​​​​​​
      lg, Christian
      ​​​​​
      Zuletzt geändert von Christian Fenzl; 05.03.2021, 12:01.
      Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

      Kommentar

      • Christian Fenzl
        Lebende Foren Legende
        • 31.08.2015
        • 11217

        #4
        Iksi Du musst im Daemon-Script lediglich dein Script hinten mit & (Leerzeichen &) ausführen (startet dein Script als eigenen Prozess), dann läuft das Daemon-Script bis zum Ende und alles geht weiter.

        Im Issue ist ein anderer Issue zu Jörgs GPIO mit dem gleichen Problem referenziert, der dazu geführt hat, dass MQTT Gateway nie gestartet wurde. Das habe ich bei einem Benutzer per TeamViewer herausgefunden und deswegen den Bug-Issue erstellt. Wir werden das in LoxBerry-Core adressieren, bis dahin einfach das & hinten dran machen.
        Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

        Kommentar

        • olicat
          MS Profi
          • 25.08.2015
          • 547

          #5
          Danke Christian,

          das sieht sehr passend aus!
          Du musst im Daemon-Script lediglich dein Script hinten mit & (Leerzeichen &) ausführen
          Das Problem ist, das das Daemon-Script genau sein Script ist:
          Code:
          [,...]
          while True: 
                 doAnything
                 time.sleep(.2)
          Da gibt es keine Moeglichkeit, ein & hinten ran zu setzen.
          Alternativ:
          Den Inhalt des daemon-Scriptes nach bin/powerbutton.py kopieren und im daemon-Script einfach bin/powerbutton.py & starten.

          Oliver

          Kommentar


          • Christian Fenzl
            Christian Fenzl kommentierte
            Kommentar bearbeiten
            Oh ja, das ist schlecht 😜
            Wie du gesagt hast - das Script im Daemon zb ins bin/ des Plugins legen, und aus dem Daemon mit & aufrufen.
        • Iksi
          Lox Guru
          • 27.08.2015
          • 1111

          #6
          Danke, werde das am we ausprobieren. Hört sich ja nicht zuu kompliziert an...

          Kommentar

          • Iksi
            Lox Guru
            • 27.08.2015
            • 1111

            #7
            Ich habe es aktualisiert, schein jetzt zu laufen.

            Danke für die Hilfe

            Kommentar

            • olicat
              MS Profi
              • 25.08.2015
              • 547

              #8
              Super!
              Danke fuer die Info.

              Oliver

              Kommentar

              • Iksi
                Lox Guru
                • 27.08.2015
                • 1111

                #9
                Ich muss den Thread nochmal ausgraben...

                Ich hatte das Plugin ja so umgebaut wie ihr gesagt hattet. Das hatte auch ne ganze Zeit funktioniert. Seit einiger Zeit funktioniert es aber nicht mehr.
                Nun habe ich mit "ps -e" geschaut ob ich den Prozess dazu finden kann. Müsste ich da nicht einen Prozess powerbutton.py oder so finden?
                Leider finde ich den nicht.

                Wurde mit irgendeinem Update da etwas geändert, dass ich das nun irgendwie anders machen muss?
                Ich starte mein powerbutton.py script ja einfach aus dem Daemon script....

                Danke und Gruß

                Kommentar

                • Christian Fenzl
                  Lebende Foren Legende
                  • 31.08.2015
                  • 11217

                  #10
                  Funktioniert das Python-Script an sich noch?
                  Wenn das stirbt, gibt's weder das Python-Script noch das Daemon-Script als Prozess.

                  Geändert wurde mit 2.2.1, dass Daemons parallel starten, damit nicht ein Daemon-Script die anderen aufhalten kann.
                  Hilfe für die Menschen der Ukraine: https://www.loxforum.com/forum/proje...Cr-die-ukraine

                  Kommentar

                  • Iksi
                    Lox Guru
                    • 27.08.2015
                    • 1111

                    #11
                    Wenn ich das Script so starte funktioniert es.
                    Also einfach in den passenden Ordner gehen und dann python powerbutton.py dann läuft es.

                    Ich habe auch das Plugin Deinstalliert und neu installiert. Das installieren läuft ohne Fehler durch, aber es wird trotzdem nicht beim Start gestartet....

                    Kommentar

                    • olicat
                      MS Profi
                      • 25.08.2015
                      • 547

                      #12
                      Hi Iksi,

                      wie sehen die Rechte und die Besitzverhaeltnisse auf/bei Dein(em) Startscript aus?

                      Oliver

                      Kommentar

                      • Iksi
                        Lox Guru
                        • 27.08.2015
                        • 1111

                        #13
                        Die Rechte:
                        Daemon Script:
                        -rwxr-xr-x 1 root root 66 Sep 15 09:32 power_button
                        eigentliche power_button.py scipt:
                        -rwxr-xr-x 1 loxberry loxberry 1867 Sep 15 09:32 PowerButton.py

                        sieht für mich an sich okay aus, oder nicht ?

                        Kommentar

                        • olicat
                          MS Profi
                          • 25.08.2015
                          • 547

                          #14
                          Hi!

                          Das sieht fuer mich erstmal ok aus. Die Daemon-Scripte werden bestimmt durch root gestartet.
                          Und im Daemon-Script daemon steht
                          Code:
                          python /korrekter/pfad/zum/Ort//PowerButton.py
                          drin?

                          Olver

                          Kommentar

                          • Iksi
                            Lox Guru
                            • 27.08.2015
                            • 1111

                            #15
                            Ich habe nun herausgefunden was das Problem ist:
                            So sieht meine Daemon Datei aus:

                            Code:
                            #!/bin/bash
                            
                            /opt/loxberry/bin/plugins/power_button/PowerButton &
                            Das hatte auch früher funktioniert, nun muss ich aber noch das .py dahinter schreiben, die Datei habe ich aber nicht umbenannt oder sonst etwas...

                            Code:
                            #!/bin/bash
                            
                            /opt/loxberry/bin/plugins/power_button/PowerButton.py &
                            Mit "ps -e" bekomme ich allerdings noch immer keinen Prozess angezeigt der power_button oder so heißt, aber wenn ich das so abgeändert habe, zeigt er mir den Prozess python an.
                            Wie bekomme ich das hin dass er mir den Prozess als PowerButton.py anzeigt?

                            Kommentar

                            Lädt...