Моя машина 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

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

1 ответ1

0

Настоятельно советуем вам использовать 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_${1}                                                                    
        ;;                                                                        
  restart|reload|force-reload)                                                    
        d_stop                                                                    
        sleep 1                                                                   
        d_start                                                                   
        ;;                                                                        
  status)                                                                         
        status_of_proc "$NAME" "$DAEMON" && exit 0 || exit $?                     
        ;;                                                                     
  *)                                                                           
        echo "Usage: $SCRIPTNAME {start|stop|restart|status}"                  
        exit 3                                                                 
        ;;                                                                     
esac                                                                           

exit 0

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .