Skip to content

Instantly share code, notes, and snippets.

@baniol
Created March 26, 2015 21:52
Show Gist options
  • Save baniol/bc04281e1dae7a04e821 to your computer and use it in GitHub Desktop.
Save baniol/bc04281e1dae7a04e821 to your computer and use it in GitHub Desktop.
init.d / monit generator
#!/bin/bash
### BEGIN INIT INFO
# Provides: notes-backend
# Required-Start: $syslog $remote_fs
# Required-Stop: $syslog $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop of clippings
# Description: My kindle clippings service
### END INIT INFO
RETVAL=0
APP_NAME="notes-backend"
DIR="/home/marcin/Projects/projectalfa/notes-backend"
APP="server.js"
LOG_FILE="$DIR/$APP_NAME.log"
NODE=/usr/bin/node
FOREVER=/usr/local/bin/forever
LOCK_FILE="/var/lock/subsys/$APP_NAME"
test -x $NODE || exit 0
function start_app {
if [ ! -f "$LOCK_FILE" ] ; then
NODE_ENV=production nohup "$NODE" "$DIR/$APP" 1>>"$LOG_FILE" 2>&1 &
#$FOREVER start "$DIR/$APP" 1>>"$LOG_FILE" 2>&1 &
echo $! > "$DIR/$APP_NAME.pid"
RETVAL=$?
[ $RETVAL -eq 0 ] && touch $LOCK_FILE
else
echo "$APP_NAME is locked"
RETVAL=1
fi
}
function start_prod {
start "production"
}
function start_dev {
start "development"
}
function start {
#if [ ! -f "$LOCK_FILE" ] ; then
NODE_ENV=$1 nohup "$NODE" "$DIR/$APP" 1>>"$DIR/$APP_NAME.log" 2>&1 &
#NODE_ENV=$1 $FOREVER start "$DIR/$APP" 1>>"$LOG_FILE" 2>&1 &
echo $! > "$DIR/$APP_NAME.pid"
RETVAL=$?
#[ $RETVAL -eq 0 ] && touch $LOCK_FILE
#else
#echo "$APP_NAME is locked"
#RETVAL=1
#fi
}
function stop_app {
kill `cat $DIR/$APP_NAME.pid`
RETVAL=1
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -f $LOCK_FILE
}
case $1 in
start)
start_prod ;;
stop)
stop_app ;;
start_dev)
start_dev ;;
restart)
stop_app
start_app
;;
*)
echo "usage: YOUR_APP_NAME {start|stop|restart|start_dev}" ;;
esac
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment