Recomendamos enfaticamente que você use o 'padrão' init.d dos serviços de redação. Isso também cria menos confusão quando outra pessoa está olhando para ela que está ciente dos serviços init.d. Por favor, veja o exemplo abaixo:
#!/bin/sh
#
# Author: Your Name <[email protected]>
#
### 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