baniol
3/26/2015 - 9:52 PM

init.d / monit generator

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