NEWS
Fehler in iobroker.sh
-
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
-
@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
-
@paul53
Da kommtroot@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
-
@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
-
Super. Danke. Probier ich gleich aus nachher aus.
Gruss Ralf -
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
-
@paul53
Gaaanz vorsichtig:
ich meine die neuen Installationen arbeiten nicht mehr mit init.d - oder?? -
-
@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.
-
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?
@Paulroot@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*
-
@paul53 sagte in Fehler in iobroker.sh:
/etc/init.d/iobroker.sh stop
/etc/init.d/iobroker.sh startHi 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
-
LÄUFT!!!
Das war's. Danke!
You made my day!Gruss Ralf