public
Last active

node.js init.d script for CentOS

  • Download Gist
nodejs
Shell
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
#!/bin/sh
 
#
# chkconfig: 35 99 99
# description: Node.js /home/nodejs/sample/app.js
#
 
. /etc/rc.d/init.d/functions
 
USER="nodejs"
 
DAEMON="/home/nodejs/.nvm/v0.4.10/bin/node"
ROOT_DIR="/home/nodejs/sample"
 
SERVER="$ROOT_DIR/app.js"
LOG_FILE="$ROOT_DIR/app.js.log"
 
LOCK_FILE="/var/lock/subsys/node-server"
 
do_start()
{
if [ ! -f "$LOCK_FILE" ] ; then
echo -n $"Starting $SERVER: "
runuser -l "$USER" -c "$DAEMON $SERVER >> $LOG_FILE &" && echo_success || echo_failure
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch $LOCK_FILE
else
echo "$SERVER is locked."
RETVAL=1
fi
}
do_stop()
{
echo -n $"Stopping $SERVER: "
pid=`ps -aefw | grep "$DAEMON $SERVER" | grep -v " grep " | awk '{print $2}'`
kill -9 $pid > /dev/null 2>&1 && echo_success || echo_failure
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f $LOCK_FILE
}
 
case "$1" in
start)
do_start
;;
stop)
do_stop
;;
restart)
do_stop
do_start
;;
*)
echo "Usage: $0 {start|stop|restart}"
RETVAL=1
esac
 
exit $RETVAL

Thanks for your script, very useful

I was able to retrofit this into a generic python daemon. Very helpful, thanks!

Got me going in the right direction. Thanks!

For Google Coder on the Raspberry Pi, this was very usefull. Thank you very much!

Hi,

Change the start area, to add this content " && echo ps -aefw | grep "$DAEMON $SERVER" | grep -v " grep " | awk '{print $2}' > $LOCK_FILE".

The result is "[ $RETVAL -eq 0 ] && touch $LOCK_FILE && echo ps -aefw | grep "$DAEMON $SERVER" | grep -v " grep " | awk '{print $2}' > $LOCK_FILE
else"

This is necessary to analise PID of process. I'm install the "monit" to monitoring and restart node.js process. There is need for PID in the "LOCK_FILE".

Regards,
Bruno Almeida At Rivendel Tecnologia - From Brazil

Would have been useful to comment the lines to change, and how to use it and start/stop it.

Please sign in to comment on this gist.

Something went wrong with that request. Please try again.