Как запустить приложение node.js при загрузке машины, создав загрузочную службу

325
b11

Моя машина Ubuntu 16.04. Я хочу запустить свое приложение node.js, когда машина загружается каждый раз. Согласно этому посту об автозапуске услуг. Я попытался сделать услугу, выполнив следующие действия:

1) Я создал скрипт для запуска приложения узла с foreverмодулем узла .

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

2) Я назвал этот скрипт startApp.shи поместил этот скрипт в папку /etc/init.d/ .

3) Я управлял командой update-rc.d startApp defaults

Но я получил ошибку update-rc.d: error: initscript не существует: /etc/init.d/startApp

Что я сделал не так?

0
Обратите внимание на расхождение между: «Я назвал этот скрипт startApp.sh и поместил этот скрипт в папку /etc/init.d/». и "initscript не существует: /etc/init.d/startApp". `.sh` отсутствует во втором случае, поэтому вам, вероятно, нужно добавить его при запуске` update-rc.d` Patrick Mevzek 6 лет назад 0
@PatrickMevzek имеет смысл, но по какой-то причине ссылка в этом посте не содержит `.sh`, поэтому я предположил, что при выполнении этой команды было выполнено какое-то преобразование b11 6 лет назад 0

1 ответ на вопрос

0
rowan

Настоятельно советуем вам использовать init.d «стандарт» письменных сервисов, это также создает меньше путаницы, когда другой человек смотрит на него, который знает об init.d сервисах. Пожалуйста, смотрите пример ниже:

#!/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