Skip to content

Instantly share code, notes, and snippets.

@sorccu
Created May 10, 2012 08:23
Show Gist options
  • Save sorccu/2651867 to your computer and use it in GitHub Desktop.
Save sorccu/2651867 to your computer and use it in GitHub Desktop.
nodejs forever service script
#!/bin/sh
#
# chkconfig: 345 80 20
# description: project-name
# processname: project-name
NAME=project-name
SRV_DIR=/srv/$NAME
SOURCE_DIR=$SRV_DIR/current
SHARED_DIR=$SRV_DIR/shared
SOURCE_FILE=$SOURCE_DIR/app.js
NODE_ENV=development
USER=node
forever=/usr/bin/forever
logfile=$SHARED_DIR/log/forever.log
outfile=$SHARED_DIR/log/out.log
errfile=$SHARED_DIR/log/err.log
RETVAL=0
if [ ! -d "$SOURCE_DIR" ] ; then
exit 0
fi
start() {
echo -n $"Starting $NAME: "
pid=`ps -u $USER -o pid -o command | awk '{ print $1, $3 }' | \
grep -F $SOURCE_FILE | head -n 1 | awk '{ print $1 }'`
if [ -z "$pid" ] ; then
runuser -s /bin/bash $USER -c "NODE_ENV=$NODE_ENV ${forever} start \
--logFile ${logfile} \--outFile ${outfile} --errFile ${errfile} \
--append --debug $SOURCE_FILE"
RETVAL=$?
echo
else
echo $"$NAME (pid ${pid}) is running..."
fi
}
stop() {
echo -n $"Stopping $NAME: "
index=`sudo runuser -s /bin/bash $USER -c "forever list" | \
sed -r "s/\x1B\[([0-9]{1,2}(;[0-9]{1,2})?)?[m|K]//g" | \
grep -F $SOURCE_FILE | head -n 1 | cut -d '[' -f 2 | cut -d ']' -f 1`
if [ ! -z "$index" ] ; then
runuser -s /bin/bash $USER -c "${forever} stop ${index}"
RETVAL=$?
echo
else
echo $"$NAME is stopped"
fi
}
status() {
pid=`ps -u $USER -o pid -o command | awk '{ print $1, $3 }' | \
grep -F $SOURCE_FILE | head -n 1 | awk '{ print $1 }'`
if [ -z "$pid" ] ; then
echo $"$NAME is stopped"
return 3
fi
echo $"$NAME (pid ${pid}) is running..."
return 0
}
restart() {
stop
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
status)
status
RETVAL=$?
;;
restart|reload|force-reload|condrestart|try-restart)
restart
;;
*)
echo $"Usage: $0 {start|stop|status|restart|reload|force-reload|condrestart|try-restart}"
RETVAL=2
;;
esac
exit $RETVAL
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment