Skip to content

Instantly share code, notes, and snippets.

@azvoleff
Created June 26, 2015 17:35
Show Gist options
  • Select an option

  • Save azvoleff/571d9780a67793fa9b8c to your computer and use it in GitHub Desktop.

Select an option

Save azvoleff/571d9780a67793fa9b8c to your computer and use it in GitHub Desktop.
#!/bin/sh
#
# chkconfig: - 85 15
ROOT="/home/ubuntu/cartodb"
USER="ubuntu"
ENVIRONMENT="development"
QUEUES="*"
COUNT=1
RUBY="ruby-1.9.3-p327@global"
GEMS="/usr/local/rvm/gems/$RUBY/bin"
RUBY_ENV="/usr/local/rvm/environments/$RUBY"
BUNDLER="$GEMS/bundle"
RAKE="$GEMS/rake"
PID_DIR="$ROOT/tmp/pids"
LOG_DIR="$ROOT/log"
WORKER_PID="$PID_DIR/resque_worker.%d.pid"
WORKER_LOG="$LOG_DIR/resque_worker.%d.log"
SCHEDULER_PID="$PID_DIR/resque_scheduler.pid"
SCHEDULER_LOG="$LOG_DIR/resque_scheduler.log"
start() {
local program
local options
source $RUBY_ENV
cd $ROOT
if [ -f $ROOT/Gemfile.lock ]; then
program="$BUNDLER exec rake"
else
program="$RAKE"
fi
options="RAILS_ENV=$ENVIRONMENT QUEUES=$QUEUES BACKGROUND=yes"
for i in $(seq 1 $COUNT); do
if [ "$1" = "$i" ] || [ "$#" -eq 0 ]; then
pidfile=$(printf $WORKER_PID $i)
logfile=$(printf $WORKER_LOG $i)
#echo $program $options
echo -n "Starting worker $i ..."
daemon --user $USER "$program resque:work $options PIDFILE=$pidfile 2>&1 >> $logfile"
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo "Started worker."
else
echo "Failed to start worker."
fi
echo
fi
done
if [ "$1" = "scheduler" ] || [ "$#" -eq 0 ]; then
echo -n "Starting scheduler..."
daemon --user $USER "$program resque:scheduler $options PIDFILE=$SCHEDULER_PID 2>&1 >> $SCHEDULER_LOG"
RETVAL=$?
if [ $RETVAL -eq 0 ]; then
echo "Started scheduler."
else
echo "Failed to start scheduler."
fi
echo
fi
}
stop() {
local pidfile
for i in $(seq 1 $COUNT); do
if [ "$1" = "$i" ] || [ "$#" -eq 0 ]; then
echo -n "Stopping worker $i ..."
pidfile=$(printf $WORKER_PID $i)
if [ -f $pidfile ]; then
kill -9 $(cat $pidfile)
RETVAL=$?
else
RETVAL=1
fi
if [ $RETVAL -eq 0 ]; then
rm -f $pidfile
echo "Stopped worker."
else
echo "Failed to stop worker."
fi
echo
fi
done
if [ "$1" = "scheduler" ] || [ "$#" -eq 0 ]; then
echo -n "Stopping scheduler..."
if [ -f $SCHEDULER_PID ]; then
kill -9 $(cat $SCHEDULER_PID)
RETVAL=$?
else
RETVAL=1
fi
if [ $RETVAL -eq 0 ]; then
echo "Stopped scheduler."
rm -f $SCHEDULER_PID
else
echo "Failed to stop scheduler."
fi
echo
fi
}
status() {
local pidfile
for i in $(seq 1 $COUNT); do
if [ "$1" = "$i" ] || [ "$#" -eq 0 ]; then
echo -n "worker $i"
pidfile=$(printf $WORKER_PID $i)
if [ -f $pidfile ]; then
echo
ps -fp $(cat $pidfile)
else
echo " - not running"
fi
fi
done
if [ "$1" = "scheduler" ] || [ "$#" -eq 0 ]; then
echo -n "scheduler"
if [ -f $SCHEDULER_PID ]; then
echo
ps -fp $(cat $SCHEDULER_PID)
else
echo " - not running"
fi
fi
}
case "$1" in
start) start $2 ;;
stop) stop $2 ;;
restart|force-reload)
stop $2
sleep 1
start $2
;;
status) status $2 ;;
*)
echo "Usage: $0 {start|stop|restart|force-reload|status}" >&2
exit 1
;;
esac
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment