Skip to content

Instantly share code, notes, and snippets.

@franzwong
Created February 24, 2016 03:45
Show Gist options
  • Save franzwong/da43ff8f06fe67a86d58 to your computer and use it in GitHub Desktop.
Save franzwong/da43ff8f06fe67a86d58 to your computer and use it in GitHub Desktop.
nodejs daemon
#!/bin/bash
USER=nodejs
PIDFILE=/var/run/sample.pid
SCRIPT=/home/$USER/sample/index.js
NVM_SCRIPT=/home/$USER/.nvm/nvm.sh
start() {
echo "Starting service"
if [ "$foreverId" == "" ]; then
touch $PIDFILE
chown $USER $PIDFILE
su $USER -c ". $NVM_SCRIPT && forever start --pidFile $PIDFILE $SCRIPT"
RETVAL=$?
else
echo "Service is already running"
RETVAL=0
fi
}
stop() {
echo "Stopping service"
if [ "$foreverId" != "" ]; then
su $USER -c ". $NVM_SCRIPT && forever stop $SCRIPT"
rm -rf $PIDFILE
RETVAL=$?
else
echo "Service is not running"
RETVAL=1
fi
}
if [ -f $PIDFILE ]; then
read pid < $PIDFILE
else
pid=""
fi
if [ "$pid" != "" ]; then
foreverid=`su $USER -c ". ~/.nvm/nvm.sh && forever list --plain | sed -n 's/^data:\s\+\[\([0-9]\+\)\]\s\+.*\s\+'$pid'\s\+\S\+\s\+[0-9]\+:[0-9]\+:[0-9]\+:[0-9]\+\.[0-9]\+\s*$/\1/p'"`
else
foreverId=""
fi
case "$1" in
start)
start
;;
stop)
stop
;;
*)
echo "Usage: {start|stop}"
exit 1
;;
esac
exit $RETVAL
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment