Ankündigung

Einklappen
Keine Ankündigung bisher.

EDOMI-Releases/Updates | Aktuell: Version 2.03

Einklappen
Dieses Thema ist geschlossen.
X
Das ist ein wichtiges Thema.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Zitat von gaert Beitrag anzeigen
    Ergänzen würde ich noch eine Warteschleife, bis EDOMI auch beendet IST... Control.php wartet nicht, sondern setzt nur den Wunsch ab
    Das ist mir aufgefallen, deswegen ist da nen sleep 5 drin... wirklich zu warten bis der Prozess weg ist, ist nicht immer so eine gute Idee - denn wenn der haengt, haengt auch das Runterfahren.
    Am sinnvollsten (oder besser: Richtig) waere es, dem Prozess zB 5 Sekunden zu geben (maximal) und wenn er dann immer noch laeuft, aus Gehaessigkeit nochmal ein "kill -9" hinschicken und einfach weitermachen. Aber ich weiss nicht genau welche Edomi Prozesse eigentlich relevant sind und ueberhaupt hab ich das vorhin hingeschmiert und da war mir das alles zu kompliziert irgendwie

    Wenn Du mir sagst, welche Prozesse akut zu beenden seien und wie lange sowas wohl (realistisch) dauern mag, kann ich das Skript gern um ne entsprechende Ueberpruefung erweitern...

    gruesse :: Michael

    Kommentar


      Die Wartezeit hängt von vielen Faktoren ab, insbesondere die Zeit, die sich MySQL nimmt (flush und diverse Aufräumarbeiten). Daher ist dies schlecht schätzbar...

      Im Grunde genügt es auf sämtliche PHP-Prozesse zu warten (pidof php) - denn EDOMI gibts ja nur als PHP Apache-PHP-Prozesse haben ja damit nichts zu tun (httpd).

      Aber wie gesagt: So richtig sauber ist das alles nicht, denn dafür ist EDOMI nicht gemacht. Anfangs hatte EDOMI noch auf Systemnachrichten gelauscht, aber ich sah keinen Bedarf dafür - schließlich soll EDOMI als Masterhirn die Hardware steuern.

      Für USV-Scripte (shutdown wenn Strom knapp) würde ich einfach "control.php shutdown" verwenden, also im USV-Script. Dann fährt erst EDOMI runter und setzt dann einen shutdown-Befehl ans OS ab.
      EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

      Kommentar


        Zitat von gaert Beitrag anzeigen
        Die Wartezeit hängt von vielen Faktoren ab...
        Bei mir isses im Moment so 5-6 Sekunden.
        Ich finde das Skript kann nicht schaden, greift ja nur im Notfall

        Hier in aktualisiert:
        Code:
        #!/bin/sh
        
        # chkconfig: - 93 10
        # description: Edomi init Skript
        
        ### BEGIN INIT INFO
        # Provides: edomi
        # Required-Start: $local_fs mysqld httpd
        # Required-Stop:  $local_fs mysqld httpd
        # Default-Start: 2 3 4 5
        # Default-Stop: 0 1 6
        # Short-Description: stop Edomi
        # Description: Edomi
        ### END INIT INFO
        
        . /etc/rc.d/init.d/functions
        
        RETVAL=0
        
        edomipid() {
            echo `ps -ef | grep "/usr/local/edomi/main/proc/[p]roc_main.php" | awk '{print $2}'`
        }
        
        stop() {
            wait=30
            echo -n $"Shutting down Edomi: "
            /usr/bin/php /usr/local/edomi/main/control.php quit
            rm -f /var/lock/subsys/edomi
            sleep 1
            PID=$(edomipid)
            s=0
            if [ "x$PID" != x ] ; then
                echo "Allowing Edomi to terminate within $wait seconds"
            fi
            while [ "x$PID" != x ]; do
                s=$((s+1))
                echo -n "."
                if [ "$s" -ge $wait ]; then
                    echo "Edomi did not terminate, hard killing"
                    kill -9 $PID
                    exit 0;
                fi
                sleep 1
                PID=$(edomipid)
            done
            echo
            exit 0;
        }
        
        start() {
            touch /var/lock/subsys/edomi
        }
        
        status() {
            echo not implemented
        }
        
        restart() {
            /usr/bin/php /usr/local/edomi/main/control.php restart
        }
        
        case "$1" in
          start)
                start
                ;;
          stop)
                stop
                ;;
          status)
                status
                ;;
          restart)
                restart
                ;;
          condrestart|try-restart)
                status >/dev/null 2>&1 || exit 0
                restart
                ;;
          force-reload)
                restart
                ;;
          *)
                echo $"Usage: $prog {start|stop|restart|force-reload|condrestart|try-restart|status|help}"
                RETVAL=2
        esac
        
        exit $RETVAL

        Kommentar


          Klar - Dein Script ist super!

          Ich muss allerdings noch ergänzen, dass im "Fehlerfall" (also wenn EDOMI aus irgendwelchen Gründen hängt) ohnehin ein Reboot angestoßen wird. Die Prozesse überwachen sich nämlich gegenseitig, d.h. wenn einer ausfällt, sorgen die anderen dafür, dass ein Reboot eingeleitet wird (und somit hoffentlich ein Neustart von EDOMI).

          Unabhängig davon kann ich auch gerne control.php noch ein wenig erweitern, also exit-Codes übergeben etc... Das Script habe ich irgendwann mal auf die Schnelle gebastelt (und nie wirklich gebraucht)
          EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

          Kommentar


            Kann man das rote blinken nicht einfach aus machen?
            Dieser Beitrag enthält keine Spuren von Sarkasmus... ich bin einfach so?!

            Kommentar


              Kann man - aber will man das? Spätestens wenn Deine DBs verhuddelt sind und nix mehr geht, quillt das Forum vermutlich mit Anfragen Deinerseits über...
              EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

              Kommentar


                Nein, ich habe nur eine 1 Button visu aktuell und wenn es mehr wird, dann bleibt edomi an. Von mir kann es im Administrator Bereich ja blinken?
                Dieser Beitrag enthält keine Spuren von Sarkasmus... ich bin einfach so?!

                Kommentar


                  Zitat von gaert Beitrag anzeigen
                  Klar - Dein Script ist super!
                  Das ist jetzt etwas zu euphorisch

                  Kommentar


                    Nee - ich habe diese INIT-Scripte immer gehasst, deswegen find's ich super!
                    EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                    Kommentar


                      So... Nach dem nächsten Update wird sich control.php dann wie folgt verhalten:
                      • reboot
                        • Die Hardware wird neugestartet (reboot)
                        • Ausgabe: OK;REBOOT (es wird nicht geprüft, ob der Befehl tatsächlich ausgeführt wurde)
                      • shutdown
                        • Die Hardware wird heruntergefahren
                        • Ausgabe: OK;SHUTDOWN (es wird nicht geprüft, ob der Befehl tatsächlich ausgeführt wurde)
                      • start
                        • EDOMI wird gestartet (sofern EDOMI pausiert ist und ein Live-Projekt vorhanden ist)
                        • Ausgabe: OK;START (es wird nicht geprüft, ob der Befehl tatsächlich ausgeführt wurde)
                      • pause
                        • EDOMI wird pausiert
                        • Ausgabe: OK;PAUSE (es wird nicht geprüft, ob der Befehl tatsächlich ausgeführt wurde)
                      • restart
                        • EDOMI wird neugestartet (oder pausiert, wenn kein Live-Projekt vorhanden ist)
                        • Ausgabe: OK;RESTART (es wird nicht geprüft, ob der Befehl tatsächlich ausgeführt wurde)
                      • stop/quit
                        • EDOMI wird vollständig beendet (zum Linux-Promt)
                        • Ausgabe: OK;STOP/QUIT;WAITING...
                        • wenn das Beenden erfolgreich war: OK;STOP/QUIT;READY
                        • wenn das Beenden nicht erfolgreich war (nach 30 Sekunden): ERROR;STOP/QUIT;TIMEOUT
                      Beim Parameter "stop" (oder "quit") wird also gewartet, bis EDOMI tatsächlich beendet ist und die entsprechende Meldung ausgegeben. Nach 30 Sekunden wird ggf. die Timeout-Meldung ausgegeben.
                      EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                      Kommentar


                        Jetzt hast du mich aber fast erschreckt. Deine letzte Nachricht sah vom Aufbau aus wie Release-Notes einer neuen Version...

                        Kommentar


                          Zitat von gaert Beitrag anzeigen
                          So...
                          pfff... dann funktioniert mein init-script ja nicht mehr

                          Frage: (ich weiss, das ist eigentlich anders gedacht, aber) koennte man nicht die gesamte Edomi-Mimik ueber ein init-Script fahren? Also raus aus rc.local? Das ist so amateurhaft Ich taet das auch gern entsprechend aufbereiten dann (wenn du - was ich verstehen kann - init Skripte nicht magst).

                          gruesse :: Michael

                          Kommentar


                            Das ist so amateurhaft
                            BLASPHEMIE! BLASHPHEMIE!

                            Kommentar


                              Zitat von rdeckard Beitrag anzeigen
                              BLASPHEMIE! BLASHPHEMIE!
                              Du hast mich falsch zitiert!

                              Da war nen Smilie hinter

                              Kommentar


                                Tja... Wie gewonnen so zerronnen

                                Aber zu Deiner Frage: Klar - sehr gerne!

                                Die rc.local-Variante ist quasi ein Relikt aus der EDOMI-Vergangenheit... Ich wollte schnell und einfach einen Autostart und habe dies quasi auf die Schnelle so gelöst (Faulheit). Und da dies immer so schön funktionierte...........

                                Ein weiterer Grund: Zu Urzeiten kommunizierte EDOMI noch per eibd mit dem Bus. Leider wollte eibd (bei mir zumindest) nicht per INIT starten - warum auch immer. Per rc.local hingegen lief der Bursche brav an.

                                Ungeachtet dessen: Wo siehst Du das Problem mit rc-local? INIT würde hier m.E. keine wirklichen Vorteile bieten, da sich EDOMI eh an keine Konvention hält
                                EDOMI - Intelligente Steuerung und Visualisierung KNX-basierter Elektro-Installationen (http://www.edomi.de)

                                Kommentar

                                Lädt...
                                X