NEWS

Fehler in iobroker.sh


  • Starter

    Hallo alle
    Ich verwende folgendes iobroker.sh in etc/init.d:

    #!/bin/bash
    ### BEGIN INIT INFO
    # Provides: iobroker.sh Required-Start: $network $local_fs $remote_fs Required-Stop:: $network $local_fs $remote_fs Default-Start: 2 
    # 3 4 5 Default-Stop: 0 1 6 Short-Description: starts ioBroker Description: starts ioBroker
    ### END INIT INFO
    (( EUID )) && echo .You need to have root privileges.. && exit 1 
    PIDF=/opt/iobroker/node_modules/iobroker.js-controller/lib/iobroker.pid NODECMD=/usr/local/bin/node 
    IOBROKERCMD=/opt/iobroker/node_modules/iobroker.js-controller/iobroker.js RETVAL=0 IOBROKERUSER=root start() {
                export IOBROKER_HOME=/opt/iobroker
                echo -n "Starting ioBroker"
                sudo -u ${IOBROKERUSER} $NODECMD $IOBROKERCMD start
                RETVAL=$?
    }
    stop() {
                echo -n "Stopping ioBroker"
                sudo -u ${IOBROKERUSER} $NODECMD $IOBROKERCMD stop
                RETVAL=$?
    }
    case "$1" in
        start)
          start
      ;;
        stop)
          stop
      ;;
        restart)
          stop
          start
      ;;
        *)
          echo "Usage: iobroker {start|stop|restart}"
          exit 1
      ;; esac exit $RETVAL
    
    

    Ich habe vorhin im Syslog aber folgende Zeilen gefunden

    Feb 25 04:28:06 localhost systemd[1]: Starting iobroker.service...
    Feb 25 04:28:06 localhost iobroker.sh[14053]: /etc/init.d/iobroker.sh: line 8: syntax error near unexpected token `('
    Feb 25 04:28:06 localhost iobroker.sh[14053]: /etc/init.d/iobroker.sh: line 8: `IOBROKERCMD=/opt/iobroker/node_modules/iobroker.js-controller/iobroker.js RETVAL=0 IOBROKERUSER=root start() {'
    Feb 25 04:28:06 localhost systemd[1]: iobroker.service: Control process exited, code=exited status=2
    Feb 25 04:28:06 localhost systemd[1]: Failed to start iobroker.service.
    Feb 25 04:28:06 localhost systemd[1]: iobroker.service: Unit entered failed state.
    Feb 25 04:28:06 localhost systemd[1]: iobroker.service: Failed with result 'exit-code'.
    
    

    Ich nehme an, das ist auch der Grund warum Iobroker bei Reboot nicht startet. Aber wo ist da genau der Syntaxfehler?
    Gruss Ralf



  • Es fehlen einige LF (line feed) in folgendem Bereich:

    (( EUID )) && echo .You need to have root privileges.. && exit 1
    PIDF=/opt/iobroker/node_modules/iobroker.js-controller/lib/iobroker.pid
    NODECMD=/usr/local/bin/node
    IOBROKERCMD=/opt/iobroker/node_modules/iobroker.js-controller/iobroker.js
    RETVAL=0
    IOBROKERUSER=root
    
    start() {
                export IOBROKER_HOME=/opt/iobroker
    

    und am Ende

          exit 1
      ;;
    esac
    exit $RETVAL
    

  • Starter

    @paul53
    Danke!
    Um es einfacher zu machen:
    Kannst Du mir ev. eine iobroker.sh hier reinstellen die funktoniert?

    Gruss Ralf



  • @derrapf
    Bei Dir hat NODECMD einen anderen Pfad als bei mir. Was ergibt ?

    which node
    

  • Starter

    @paul53
    Da kommt

    root@ioBroker-Rock64:~# which node
    /usr/bin/node
    
    


  • @derrapf sagte

    /usr/bin/node

    Dann stimmt sie doch mit meinem Pfad überein, oder hast Du 2 Node-Versionen installiert ? Was ergibt ?

    /usr/bin/node -v
    /usr/local/bin/node - v
    

  • Starter

    @paul53
    Erster Befehl:

    root@ioBroker-Rock64:~# /usr/bin/node -v
    v8.15.0
    

    Zweiter Befehl

    root@ioBroker-Rock64:~# /usr/local/bin/node - v
    -bash: /usr/local/bin/node: No such file or directory
    

    Kann aber sein dass das iobroker.sh das ich da verwende ein Falsche ist. Das könnte noch vom Raspi stammen. Das habe ich übernommen weil beim Image von Rainer für den Rock64 keines dabei war.
    Gruss Ralf



  • @derrapf sagte):

    Kann aber sein dass das iobroker.sh das ich da verwende ein Falsche ist.

    Das ist es mit Sicherheit. Hier ein (hoffentlich) passendes.

    #!/bin/bash
    ### BEGIN INIT INFO
    # Provides:          iobroker.sh
    # Required-Start:    $network $local_fs $remote_fs
    # Required-Stop::    $network $local_fs $remote_fs
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    # Short-Description: starts ioBroker
    # Description:       starts ioBroker
    ### END INIT INFO
    (( EUID )) && echo .You need to have root privileges.. && exit 1
    PIDF=/opt/iobroker/node_modules/iobroker.js-controller/lib/iobroker.pid
    NODECMD=/usr/bin/node
    IOBROKERCMD=/opt/iobroker/node_modules/iobroker.js-controller/iobroker.js
    RETVAL=0
    IOBROKERUSER=root
    
    start() {
                export IOBROKER_HOME=/opt/iobroker
                echo -n "Starting ioBroker"
                sudo -u ${IOBROKERUSER} $NODECMD $IOBROKERCMD start
                RETVAL=$?
    }
    
    stop() {
                echo -n "Stopping ioBroker"
                sudo -u ${IOBROKERUSER} $NODECMD $IOBROKERCMD stop
                RETVAL=$?
    }
    case "$1" in
        start)
          start
      ;;
        stop)
          stop
      ;;
        restart)
          stop
          start
      ;;
        *)
          echo "Usage: iobroker {start|stop|restart}"
          exit 1
      ;;
    esac
    exit $RETVAL
    

    oder als Datei iobroker.sh


  • Starter

    Super. Danke. Probier ich gleich aus nachher aus.
    Gruss Ralf


  • Starter

    Hallo Paul
    Kann Teilerfolg vermelden.
    Der Fehler taucht im Syslog nicht mehr auf. Allerdings startet der IOBroker beim Booten aber auch nicht.

    Gruss Ralf



  • @derrapf Startet ioBroker bei der Eingabe von ?

    /etc/init.d/iobroker.sh start
    

    Was ergibt ?

    ls -l /etc/init.d/iobroker.sh
    

  • Forum Testing Most Active Global Moderator Administrators

    @paul53
    Gaaanz vorsichtig:
    ich meine die neuen Installationen arbeiten nicht mehr mit init.d - oder??



  • @Homoran sagte

    ich meine die neuen Installationen arbeiten nicht mehr mit init.d - oder??

    Richtig, aber ich denke, @derrapf verwendet ein älteres Image für den Rock64.


  • Developer

    @derrapf
    Wie alt ist deine Installation? Evtl lohnt sich ein Backup und Ausführen des Fixer-Skripts.

    Aber dazu sollten wir sicher sein, dass nicht doch 2 Node-Versionen laufen.



  • @AlCalzone sagte:

    Aber dazu sollten wir sicher sein, dass nicht doch 2 Node-Versionen laufen.

    Also was ergibt ?

    nodejs -v
    

    Dass unter /usr/local/bin node nicht existiert, wurde bereits geprüft.


  • Starter

    Hallo Rainer
    Da ich eines Deiner ersten Images verwende nehme ich an, ich verwende noch eine "alte" IOBroker Installation. Was ist jetzt eigentlich an der "Neuen" genau anders?
    @Paul

    root@ioBroker-Rock64:~# /etc/init.d/iobroker.sh start
    Starting ioBrokeriobroker controller daemon already running. PID: 2634
    
    root@ioBroker-Rock64:~# ls -l /etc/init.d/iobroker.sh
    -rwxrwxrwx 1 root root 1098 M▒r  4 15:03 /etc/init.d/iobroker.sh
    
    root@ioBroker-Rock64:~# nodejs -v
    v8.15.0
    
    

    Funktioniert alles wie erwartet. IOBroker läuft aktuell tatsächlich.

    Evtl lohnt sich ein Backup und Ausführen des Fixer-Skripts.

    Hmmm. Würde ich eigentlich nur machen wenn es nicht anders geht und signfikante Vorteile bietet.
    Würde mir ungern die aktuelle Installation zerschiessen.
    Deswegen auch die Frage was da denn da nun genau anders ist.
    Gruss Ralf



  • ioBroker zu starten, wenn es bereits läuft, bringt diese Meldung. Also erst iobroker stoppen und dann wieder starten.

    /etc/init.d/iobroker.sh stop
    /etc/init.d/iobroker.sh start
    

    Was ergibt ?

    ls -l /etc/rc?.d/*iob*
    

  • Starter

    @paul53 sagte in Fehler in iobroker.sh:

    /etc/init.d/iobroker.sh stop
    /etc/init.d/iobroker.sh start

    Hi Paul. Schon klar. Dachte Du wolltest sehen, ob das Script funktioniert. Und das tut es ja, wenn es feststellt, dass IObroker schon läuft oder?
    Aber bitteschön:

    root@ioBroker-Rock64:~# /etc/init.d/iobroker.sh stop
    Stopping ioBrokerStopping iobroker controller daemon...
    
    iobroker controller daemon stopped.
    Exit code for "killall.sh": 123
    root@ioBroker-Rock64:~# /etc/init.d/iobroker.sh start
    Starting ioBrokerStarting iobroker controller daemon...
    iobroker controller daemon started. PID: 3514
    root@ioBroker-Rock64:~#
    
    

    Ich glaub hier ist was faul, oder?

    root@ioBroker-Rock64:~# ls -l /etc/rc?.d/*iob*
    ls: cannot access '/etc/rc?.d/*iob*': No such file or directory
    root@ioBroker-Rock64:~#
    

    Gruss Ralf



  • @derrapf Es fehlen dei Links zum Starten und Stoppen. Mache

    update-rc.d iobroker.sh defaults
    reboot
    

  • Starter

    LÄUFT!!!
    Das war's. Danke!
    You made my day!

    Gruss Ralf


Log in to reply
 

Suggested Topics

1.0k
Online

32.5k
Users

39.1k
Topics

529.8k
Posts