2013-11-12 23:28:39 -05:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
# This is a helper script you can use to supervise unicorn, it allows you to perform a live restart
|
|
|
|
# by sending it a USR2 signal
|
|
|
|
|
|
|
|
LOCAL_WEB="http://127.0.0.1:3000/"
|
|
|
|
|
2018-10-04 23:48:32 -04:00
|
|
|
function log()
|
|
|
|
{
|
|
|
|
echo "($$) $1"
|
|
|
|
}
|
|
|
|
|
2013-11-12 23:28:39 -05:00
|
|
|
function on_exit()
|
|
|
|
{
|
|
|
|
kill $UNICORN_PID
|
2018-10-04 23:48:32 -04:00
|
|
|
log "exiting"
|
2013-11-12 23:28:39 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
function on_reload()
|
|
|
|
{
|
2018-10-05 00:12:54 -04:00
|
|
|
log "Reloading unicorn ($UNICORN_PID)"
|
2013-11-12 23:28:39 -05:00
|
|
|
kill -s USR2 $UNICORN_PID
|
2018-10-04 05:13:17 -04:00
|
|
|
unset NEW_UNICORN_PID
|
|
|
|
|
2018-10-05 00:12:54 -04:00
|
|
|
count=0
|
|
|
|
while [ "$count" -lt 30 -a -z "$NEW_UNICORN_PID" ]; do
|
2018-10-04 05:13:17 -04:00
|
|
|
NEW_UNICORN_PID=`ps -f --ppid $UNICORN_PID | grep 'unicorn master' | grep -v old | grep -v worker | awk '{ print $2 }'`
|
2018-10-04 23:48:32 -04:00
|
|
|
log "Waiting for new unicorn master pid... $NEW_UNICORN_PID"
|
2018-10-05 00:12:54 -04:00
|
|
|
count=$((count+1))
|
2018-10-04 05:13:17 -04:00
|
|
|
sleep 1
|
|
|
|
done
|
|
|
|
|
2018-10-05 00:12:54 -04:00
|
|
|
count=0
|
2018-10-05 00:18:20 -04:00
|
|
|
while [ "$count" -lt 30 -a -z $(ps -f --ppid $NEW_UNICORN_PID | grep worker | head -1 | awk '{ print $2 }') ]; do
|
2018-10-04 23:48:32 -04:00
|
|
|
log "Waiting for new unicorn workers under $NEW_UNICORN_PID to start up..."
|
2018-10-05 00:12:54 -04:00
|
|
|
count=$((count+1))
|
2018-10-04 05:13:17 -04:00
|
|
|
sleep 1
|
|
|
|
done
|
|
|
|
|
2013-11-12 23:28:39 -05:00
|
|
|
curl $LOCAL_WEB &> /dev/null
|
2018-10-03 02:26:11 -04:00
|
|
|
kill -s QUIT $UNICORN_PID
|
2018-10-04 23:48:32 -04:00
|
|
|
log "Old pid is: $UNICORN_PID New pid is: $NEW_UNICORN_PID"
|
2013-11-12 23:28:39 -05:00
|
|
|
UNICORN_PID=$NEW_UNICORN_PID
|
|
|
|
}
|
|
|
|
|
2014-08-24 20:48:48 -04:00
|
|
|
function on_reopenlogs()
|
|
|
|
{
|
|
|
|
|
2018-10-04 23:48:32 -04:00
|
|
|
log "Reopening logs"
|
2014-08-24 20:48:48 -04:00
|
|
|
kill -s USR1 $UNICORN_PID
|
|
|
|
}
|
|
|
|
|
2013-11-12 23:28:39 -05:00
|
|
|
export UNICORN_SUPERVISOR_PID=$$
|
|
|
|
|
|
|
|
trap on_exit EXIT
|
2014-05-23 07:01:11 -04:00
|
|
|
trap on_reload USR2 HUP
|
2014-08-24 20:48:48 -04:00
|
|
|
trap on_reopenlogs USR1
|
2013-11-12 23:28:39 -05:00
|
|
|
|
2013-11-13 20:54:41 -05:00
|
|
|
unicorn $@ &
|
2013-11-12 23:28:39 -05:00
|
|
|
UNICORN_PID=$!
|
|
|
|
|
|
|
|
echo "supervisor pid: $UNICORN_SUPERVISOR_PID unicorn pid: $UNICORN_PID"
|
|
|
|
|
2014-02-04 18:48:36 -05:00
|
|
|
while kill -0 $UNICORN_PID
|
2013-11-12 23:28:39 -05:00
|
|
|
do
|
2014-02-04 18:48:36 -05:00
|
|
|
sleep 1
|
2013-11-12 23:28:39 -05:00
|
|
|
done
|