From 772127fca59290327344e3851cbf5b0e5a4ce2df Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Wed, 29 Apr 2009 11:53:00 -0700 Subject: Add example init script 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. --- examples/init.sh | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 examples/init.sh 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 " + exit 1 + ;; +esac -- cgit v1.2.3-24-ge0c7