diff options
author | Eric Wong <normalperson@yhbt.net> | 2009-04-29 11:53:00 -0700 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2009-04-29 11:53:00 -0700 |
commit | 309cf04cb78971370794ea60cc724bfd5421ca53 (patch) | |
tree | 76588558917a4a586010966244ada0d21742fe34 | |
parent | e9efec7fb79b0ff010664a4b85aaaddbf9a1e820 (diff) | |
download | unicorn-309cf04cb78971370794ea60cc724bfd5421ca53.tar.gz |
This was done in Bourne shell because it's easier for UNIX sysadmins who don't know Ruby to understand and modify. Additionally, it can be used for nginx or anything else that shares compatible signal handling.
-rw-r--r-- | examples/init.sh | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/examples/init.sh b/examples/init.sh new file mode 100644 index 0000000..866a644 --- /dev/null +++ b/examples/init.sh @@ -0,0 +1,54 @@ +#!/bin/sh +set -u +set -e +# Example init script, this can be used with nginx, too, +# since nginx and unicorn accept the same signals + +# Feel free to change any of the following variables for your app: +APP_ROOT=/home/x/my_app/current +PID=$APP_ROOT/tmp/pids/unicorn.pid +CMD="/usr/bin/unicorn -D -c $APP_ROOT/config/unicorn.rb" +INIT_CONF=$APP_ROOT/config/init.conf + +test -f "$INIT_CONF" && . $INIT_CONF + +old_pid="$PID.oldbin" + +cd $APP_ROOT || exit 1 + +sig () { + test -s "$PID" && kill -$1 `cat $PID` +} + +oldsig () { + test -s $old_pid && kill -$1 `cat $old_pid` +} + +case $1 in +start) + sig 0 && echo >&2 "Already running" && exit 0 + $CMD + ;; +stop) + sig QUIT && exit 0 + echo >&2 "Not running" + ;; +force-stop) + sig TERM && exit 0 + echo >&2 "Not running" + ;; +restart|reload) + sig HUP && echo reloaded OK && exit 0 + echo >&2 "Couldn't reload, starting '$CMD' instead" + $CMD + ;; +upgrade) + sig USR2 && sleep 2 && sig 0 && oldsig QUIT && exit 0 + echo >&2 "Couldn't upgrade, starting '$CMD' instead" + $CMD + ;; +*) + echo >&2 "Usage: $0 <start|stop|restart|upgrade|force-stop>" + exit 1 + ;; +esac |