So starten Sie die node.js-App beim Starten eines Computers, indem Sie einen Boot-Service erstellen

371
b11

Mein Rechner ist Ubuntu 16.04. Ich möchte meine node.js-Anwendung starten, wenn der Computer jedes Mal hochfährt. Laut diesem Beitrag über Autostart-Dienste. Ich habe versucht, einen Dienst zu machen, indem ich Folgendes tat:

1) Ich habe ein Skript erstellt, um die Knoten-App mit dem Knotenmodul zu starten forever.

#!/bin/bash  echo "Starting App"  forever -a start /opt/app/app.js  echo "App started" 

2) Ich habe dieses Skript benannt startApp.shund dieses Skript im Ordner /etc/init.d/ abgelegt .

3) Ich habe den Befehl ausgeführt update-rc.d startApp defaults

Ich habe aber den Fehler update-rc.d bekommen: Fehler: Initscript existiert nicht: /etc/init.d/startApp

Was habe ich falsch gemacht?

0
Beachten Sie die Diskrepanz zwischen: "Ich habe dieses Skript startApp.sh genannt und dieses Skript in den Ordner /etc/init.d/ gestellt." und "Initscript existiert nicht: /etc/init.d/startApp". `.sh` fehlt im zweiten Fall, so dass Sie es wahrscheinlich beim Starten von` update-rc.d` hinzufügen müssen Patrick Mevzek vor 5 Jahren 0
@PatrickMevzek, das macht Sinn, aber aus irgendeinem Grund enthielt der Link in diesem Beitrag kein `.sh`. Ich ging also davon aus, dass beim Ausführen dieses Befehls einige Konvertierungen vorgenommen wurden b11 vor 5 Jahren 0

1 Antwort auf die Frage

0
rowan

Wir empfehlen Ihnen dringend, den init.d-Standard für Schreibdienste zu verwenden. Dies führt auch zu weniger Verwirrung, wenn eine andere Person, die sich mit init.d-Diensten auskennt, diese betrachtet. Bitte sehen Sie das Beispiel unten:

#!/bin/sh # # Author: Your Name <email@address.domain> # ### BEGIN INIT INFO # Provides: Name # Required-Start: $local_fs $remote_fs # Required-Stop: $local_fs $remote_fs # Should-Start: $syslog # Should-Stop: $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Add a description here ### END INIT INFO  # Using LSB functions: . /lib/lsb/init-functions  set -e  NAME="NAME" DAEMON=/opt/app/app.js PIDFILE=/var/run/$NAME.pid SCRIPTNAME=/etc/init.d/$NAME  # Function that starts the daemon/service. d_start() { log_daemon_msg "Starting" "$NAME" start-stop-daemon --start --quiet --background --pidfile $PIDFILE --make-pidfile --startas $DAEMON log_end_msg $? }  # Function that stops the daemon/service.  d_stop() {  log_daemon_msg ":: stopping" "$NAME"  start-stop-daemon --stop --pidfile $PIDFILE --retry 10  log_end_msg $?  }   # Function that sends a SIGHUP to the daemon/service.  case "$1" in  start|stop)  d_$  ;;  restart|reload|force-reload)  d_stop  sleep 1  d_start  ;;  status)  status_of_proc "$NAME" "$DAEMON" && exit 0 || exit $?  ;;  *)  echo "Usage: $SCRIPTNAME "  exit 3  ;;  esac   exit 0