Ankündigung

Einklappen
Keine Ankündigung bisher.

Misterhouse: Restart nach Absturz

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

  • toldap2
    antwortet
    ..natürlich...

    Einen Kommentar schreiben:


  • makki
    antwortet
    Zitat von toldap2 Beitrag anzeigen
    Müsste heissen;
    Stimmt, solange ne "#" davor steht aber herzlich egal

    Makki

    Einen Kommentar schreiben:


  • toldap2
    antwortet
    #DAEMON_OPTS="-log_file =/usr/share/misterhouse/mh.log"

    Müsste heissen;

    #DAEMON_OPTS="-log_file /usr/share/misterhouse/mh.log"

    Einen Kommentar schreiben:


  • Bodo
    antwortet
    Zitat von steinradler Beitrag anzeigen
    Hurra,
    Ich habe es nun geschafft! Na ja, nicht ganz alleine ...
    Das init.d script von dem debian.deb von makki ...
    Dann noch mit "chkconfig -add misterhouse" oder mit rcconf automatisch starten lassen und misterhouse läuft auch nach einem reboot...
    Manuell kann den Status von mh dann mit "/etc/init.d/misterhouse start|stop|restart|reload|force-reload" ändern.
    Hallo Steini, hallo makki
    Ich find's toll wenn man etwas lernt dabei. Copy paste hilft schon erst mal und dann will ich schon wissen warum und wie es geht. Es freut mich, dass es jetzt klappt

    Einen Kommentar schreiben:


  • steinradler
    antwortet
    Hurra,

    Ich habe es nun geschafft! Na ja, nicht ganz alleine...

    Das init.d script von dem debian.deb von makki hatte den fehlenden Schalter integriert: die Option "--background" dann läuft mh "detached" (von der console).

    Ich habe das script dann für meine Zwecke übernommen und noch einen Fehler gefunden: die Option "--make-pidfile" fehlte beim Startbefehl was bewirkte dass sich der "Dienst" nicht stopen oder restarten liess.

    Nun funktioniert natürlich auch das automatische Starten!

    Hier noch mal der Code:

    Code:
    #! /bin/sh
    ### BEGIN INIT INFO
    # Provides:          misterhouse
    # Required-Start:    $local_fs $remote_fs eibd
    # Required-Stop:     $local_fs $remote_fs
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: misterhouse initscript
    # Description:       This file should be used to construct scripts to be
    #                    placed in /etc/init.d.
    ### END INIT INFO
    
    # misterhouse - control the misterhouse daemon
    #
    # Author: Michael Markstaller <devel@wiregate.de>
    #
    # UPDATE 20.10.2009
    # Steinradler: option --make-pidfile hinzuguegt div. auskommentiert;
    # DAEMON_OPTS-Zeile in das init.d script einguegt und /etc/default auskommentiert
    #
    
    PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
    export mh_parms=/usr/share/misterhouse/mh.private.ini
    DAEMON=/usr/share/misterhouse/mh/bin/mh
    NAME=misterhouse
    DESC=misterhouse
    PIDFILE=/var/run/misterhouse.pid
    #DAEMON_OPTS="-log_file =/usr/share/misterhouse/mh.log"
    
    
    test -x $DAEMON || exit 0
    
    # Include misterhouse defaults if available
    #if [ -f /etc/default/misterhouse ] ; then
    #    . /etc/default/misterhouse
    #fi
    
    # DO NOT set -e
    
    
    case "$1" in
      start)
        echo -n "Starting $DESC: "
        start-stop-daemon --start --quiet --make-pidfile --pidfile $PIDFILE --background --exec $DAEMON -- $DAEMON_OPTS
        echo "$NAME."
        ;;
      stop)
        echo -n "Stopping $DESC: "
        start-stop-daemon --stop --quiet --pidfile $PIDFILE
        echo "$NAME."
        ;;
      reload)
        echo "Reloading $DESC configuration files."
        kill -HUP `cat $PIDFILE`
        ;;
      restart|force-reload)
        echo -n "Restarting $DESC: "
        $0 stop
        sleep 2
        $0 start
        echo "$NAME."
        ;;
      *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
        exit 1
        ;;
    esac
    
    exit 0
    Dann noch mit "chkconfig -add misterhouse" oder mit rcconf automatisch starten lassen und misterhouse läuft auch nach einem reboot...

    Manuell kann den Status von mh dann mit "/etc/init.d/misterhouse start|stop|restart|reload|force-reload" ändern.

    Schöne Grüße,

    Steini

    Einen Kommentar schreiben:


  • steinradler
    antwortet
    Hallo,

    wie gesagt mein start script sieht so aus:

    Code:
    #! /bin/sh
    
    PATH=/sbin:/usr/sbin:/bin:/usr/bin
    DESC="Description of the service"
    NAME=mh
    DAEMON=/usr/share/misterhouse/mh/bin/$NAME
    export mh_parms=/usr/share/misterhouse/mh.private.ini
    mhhome=/usr/share/misterhouse
    #DAEMON_ARGS="-log_file ${mhhome}/log"
    PIDFILE=/var/run/$NAME.pid
    SCRIPTNAME=/etc/init.d/$NAME
    
    # Exit if the package is not installed
    [ -x "$DAEMON" ] || exit 0
    
    # Read configuration variable file if it is present
    [ -r /etc/default/$NAME ] && . /etc/default/$NAME
    
    # Load the VERBOSE setting and other rcS variables
    . /lib/init/vars.sh
    
    # Define LSB log_* functions.
    # Depend on lsb-base (>= 3.0-6) to ensure that this file is present.
    . /lib/lsb/init-functions
    
    #
    # Function that starts the daemon/service
    #
    do_start()
    {
            # Return
            #   0 if daemon has been started
            #   1 if daemon was already running
            #   2 if daemon could not be started
            start-stop-daemon --start --quiet --make-pidfile --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
                    || return 1
            start-stop-daemon --start --quiet --make-pidfile --pidfile $PIDFILE --exec $DAEMON -- \
                    $DAEMON_ARGS \
                    || return 2
            # Add code here, if necessary, that waits for the process to be ready
            # to handle requests from services started subsequently which depend
            # on this one.  As a last resort, sleep for some time.
    }
    #
    # Function that stops the daemon/service
    #
    do_stop()
    {
            # Return
            #   0 if daemon has been stopped
            #   1 if daemon was already stopped
            #   2 if daemon could not be stopped
            #   other if a failure occurred
            start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
            RETVAL="$?"
            [ "$RETVAL" = 2 ] && return 2
            # Wait for children to finish too if this is a daemon that forks
            # and if the daemon is only ever run from this initscript.
            # If the above conditions are not satisfied then add some other code
            # that waits for the process to drop all resources that could be
            # needed by services started subsequently.  A last resort is to
            # sleep for some time.
            start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
            [ "$?" = 2 ] && return 2
            # Many daemons don't delete their pidfiles when they exit.
            rm -f $PIDFILE
            return "$RETVAL"
    }
    
    #
    # Function that sends a SIGHUP to the daemon/service
    #
    do_reload() {
            #
            # If the daemon can reload its configuration without
            # restarting (for example, when it is sent a SIGHUP),
            # then implement that here.
            #
            start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
            return 0
    }
    
    case "$1" in
      start)
            [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
            do_start
            case "$?" in
                    0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                    2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
            esac
            ;;
      stop)
            [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
            do_stop
            case "$?" in
                    0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
                    2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
            esac
            ;;
      #reload|force-reload)
            #
            # If do_reload() is not implemented then leave this commented out
            # and leave 'force-reload' as an alias for 'restart'.
            #
            #log_daemon_msg "Reloading $DESC" "$NAME"
            #do_reload
            #log_end_msg $?
            #;;
      restart|force-reload)
            #
            # If the "reload" option is implemented then remove the
            # 'force-reload' alias
            #
            log_daemon_msg "Restarting $DESC" "$NAME"
            do_stop
            case "$?" in
              0|1)
                    do_start
                    case "$?" in
                            0) log_end_msg 0 ;;
                            1) log_end_msg 1 ;; # Old process is still running
                            *) log_end_msg 1 ;; # Failed to start
                    esac
                    ;;
              *)
    
                    # Failed to stop
                    log_end_msg 1
                    ;;
            esac
            ;;
      *)
            #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
            echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2
            exit 3
            ;;
    esac
    und kann mit
    Code:
    /etc/init.d/mh start|restart|stop
    gestartet, regestartet und gestopt werden. Mit chkconfig kann man es dann auch automatisch für die entsprechenden runlevels laufen lassen, also automatisch. Nur wie halt mit den schon oben erwähnten Einschränkungen.

    @makki:

    Zitat von makki:
    Auch an dieser Stelle nochmal es gibt ein Debian Paket inkl. Init-script dafür
    Wie aktuell ist denn, das Debian paket? Pflegst Du das alleine, kann man das bedenkenlos über eine bestehende Installation mit apt-get "drüberinstallieren"?


    Ich hoffe es gibt noch mehr Antworten zu dem Thema...

    LG,

    Steini

    Einen Kommentar schreiben:


  • makki
    antwortet
    Auch an dieser Stelle nochmal es gibt ein Debian Paket inkl. Init-script dafür

    Feedback immernoch willkommen, sicher nicht perfekt aber macht vielleicht eher Sinn, wenn man nur ein Init-script pflegt..

    Makki

    Einen Kommentar schreiben:


  • Bodo
    antwortet
    Zitat von steinradler Beitrag anzeigen
    ... Wie startet Ihr denn mh automatisch?
    Noch nicht, bin noch nicht soweit

    Einen Kommentar schreiben:


  • Bodo
    antwortet
    Zitat von steinradler Beitrag anzeigen
    ... gibt es auch für misterhouse eine Startoption mit -d damit er richtig als Dienst läuft?
    Hi Steini
    Ich habe in /etc/init.d/ ein script mit dem Namen mh (ausführbar machen mit chmod a+x /etc/init.d/mh) geschrieben, nicht perfekt
    Code:
    #! /bin/sh
    PATH=/sbin:/usr/sbin:/bin:/usr/bin:/opt/misterhouse/mh/bin/
    DESC="Description of the service"
    NAME=mh
    DAEMON=/opt/misterhouse/mh/bin/$NAME
    SCRIPTNAME=/etc/init.d/$NAME
    # Exit if the package is not installed
    [ -x "$DAEMON" ] || exit 0
    # Read configuration variable file if it is present
    [ -r /etc/default/$NAME ] && . /etc/default/$NAME
    cd /opt/misterhouse
    export mh_parms=/opt/misterhouse/mh.private.ini
    #Misterhouse starten
    $DAEMON
    und starte ihn dann mit
    Code:
    /etc/init.d/mh
    $DAEMON ist dabei nur ein Name und hat mit als Daemon laufen nix zu tun.

    Die mh.private.ini habe ich angepasst:
    Code:
    code_dir = /opt/misterhouse/code/private
    eib_device=ip:localhost
    latitude  =  47.2764
    longitude =   8.8708
    time_zone =   1
    time_format=24
    date_format=mmddyy
    usw.
    Hoffentlich hab' ich nix vergessen.

    Einen Kommentar schreiben:


  • steinradler
    antwortet
    Hallo,

    gibt es auch für misterhouse eine Startoption mit -d damit er richtig als Dienst läuft?

    Ich habe das start-stop-daemon script von eibd aus dem Lexikon für mh angepasst. Nun funktioniert das wenn ich das von der console ausführe ganz gut nur wird halt immer noch alles auf der console ausgegeben.

    Wenn ich den Rechner nun neustarte und alles automatisch geladen wird, dann schaft mein debian es nicht mehr die grafische console zu starten.

    Erst wenn ich auf der console 1 das mh abbreche läd er diese nach?

    Wie startet Ihr denn mh automatisch?

    LG,

    Steini

    Einen Kommentar schreiben:


  • Bodo
    antwortet
    Zitat von RaK Beitrag anzeigen
    "Es gibt ein apt-get dafür!"
    Genau

    Einen Kommentar schreiben:


  • RaK
    antwortet
    Zitat von Bodo Beitrag anzeigen
    wie beim iPhone, "es gibt ein APP dafür".
    Richtig SInn macht mit "Es gibt ein apt-get dafür!"

    Einen Kommentar schreiben:


  • Bodo
    antwortet
    So wieder etwas gelernt:
    linknx kann man mit -d als daemon starten, dann kann man putty getrost zumachen und er läuft und läuft
    So einfach ist das.

    Einen Kommentar schreiben:


  • Bodo
    antwortet
    Zitat von Chris M. Beitrag anzeigen
    ... man kann mehrere Putty Sessions parallel betreiben ...
    Jo, das hab' ich intuitiv so gemacht.
    Ich find' Linux echt megaklasse, so ganz ohne GUI und es läuft trotzdem.
    Und für jeden ... gibt es eine Lösung, wie beim iPhone, "es gibt ein APP dafür".

    Einen Kommentar schreiben:


  • Chris M.
    antwortet
    Zitat von Bodo Beitrag anzeigen
    Danke für die Nachhilfe, jetzt isses klarer. Dann versuch ich mein Glück mal mit nohup. Der mh lässt mich auch nicht mehr zur Console zurück, also genauer gesagt, ich muss Putty abwürgen, der läuft aber weiter scheinz als Daemon echt "daemonisch".
    Wenn wir schon dabei sind:
    Um ein Programm im Hintergrund zu starten, d.h. um gleich wieder an die Konsole zu kommen, musst Du ein "&" (vermutlich mit Leerzeichen davor) an den Programmaufruf anhängen. Etwas verwirrend kann dann sein, dass die Ausgaben vom Programm einfach mit auf der Konsole landen und damit zwischen allen sonstigen Ausgaben landen können. Dann sollte man die Ausgabe besser in eine Datei umleiten (die man z.B. per "tail -f" sich live ansehen kann um z.B. interaktiv Fehler zu beheben).
    Achtung: Programme die per "&" im Hintergrund gestartet werden, werden bei einem Logout auch mit beendet, d.h. gegen Logout hilft nur das nohup.

    Und noch ein kleiner Hinweis, aber vermutlich war das eh klar: man kann mehrere Putty Sessions parallel betreiben, d.h. sollte wo das Programm nicht zur Konsole zurückkehren (bei "top" würde man das gar nicht wollen...), dann einfach ein weiteres Putty starten...

    Einen Kommentar schreiben:

Lädt...
X