Skip to content

Instantly share code, notes, and snippets.

@DanEdens
Last active July 7, 2020 12:17
Show Gist options
  • Save DanEdens/2ad194a6f08ac2f189c67e989aeba0dd to your computer and use it in GitHub Desktop.
Save DanEdens/2ad194a6f08ac2f189c67e989aeba0dd to your computer and use it in GitHub Desktop.
Init.d script for node-red
#! /bin/sh
### BEGIN INIT INFO
# Provides: node-red
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start node-red server at init
### END INIT INFO
# Single command inspired by https://gist.github.com/Belphemur/cf91100f81f2b37b3e94
# Can be downloaded and installed in one go by using this command
# sudo wget -O /tmp/download https://gist.github.com/DanEdens/2ad194a6f08ac2f189c67e989aeba0dd/download && sudo tar -zxf /tmp/download --strip-components 1 -C /etc/init.d && sudo chmod +x /etc/init.d/node-red && sudo update-rc.d node-red defaults
set -e
NAME=node-red
USER=root
USER_DIR=/home/ubuntu/.node-red/
PIDFILE=/var/run/node-red.pid
DAEMON=/usr/local/bin/node-red
LOG='/var/log/node-red.log'
# /etc/init.d/node-red: start and stop the node-red server
test -x ${DAEMON} || exit 0
umask 022
. /lib/lsb/init-functions
run_by_init() {
([ "$previous" ] && [ "$runlevel" ]) || [ "$runlevel" = S ]
}
start_daemon (){
if start-stop-daemon --start -v --user ${USER} --oknodo --background \
--name ${NAME} --make-pidfile --pidfile ${PIDFILE} \
--exec ${DAEMON} -- -s /.node-red/settings.js >> $LOG; then
log_end_msg 0
else
log_end_msg 1
fi
}
export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"
case "$1" in
start)
if init_is_upstart; then
exit 1
fi
log_daemon_msg "Starting network daemon:" "$NAME"
start_daemon
;;
stop)
if init_is_upstart; then
exit 0
fi
log_daemon_msg "Stopping network daemon:" "$NAME"
if start-stop-daemon --stop --oknodo --pidfile ${PIDFILE}; then
log_end_msg 0
rm -f ${PIDFILE}
else
log_end_msg 1
fi
;;
reload|force-reload)
if init_is_upstart; then
exit 1
fi
log_daemon_msg "Reloading network daemon configuration:" "$NAME"
if start-stop-daemon --stop --signal HUP --quiet --oknodo --pidfile $PIDFILE; then
log_end_msg 0
else
log_end_msg 1
fi
;;
restart)
if init_is_upstart; then
exit 1
fi
log_daemon_msg "Restarting network daemon:" "node-red"
if start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile ${PIDFILE}; then
rm -f ${PIDFILE}
fi
start_daemon
;;
try-restart)
if init_is_upstart; then
exit 1
fi
log_daemon_msg "Restarting Node-red Server" "node-red"
set +e
start-stop-daemon --stop --quiet --retry 30 --pidfile ${PIDFILE}
RET="$?"
set -e
case $RET in
0)
# old daemon stopped
rm -f ${PIDFILE}
start_daemon
;;
1)
# daemon not running
log_progress_msg "(not running)"
log_end_msg 0
;;
*)
# failed to stop
log_progress_msg "(failed to stop)"
log_end_msg 1
;;
esac
;;
status)
if init_is_upstart; then
exit 1
fi
status_of_proc -p ${PIDFILE} ${DAEMON} node-red && exit 0 || exit $?
;;
*)
log_action_msg "Usage: /etc/init.d/node-red {start|stop|reload|force-reload|restart|try-restart|status}"
exit 1
esac
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment