# unicorn description "unicorn ruby app server" start on (local-filesystems and net-device-up IFACE=lo and runlevel [2345]) stop on runlevel [!2345] env WORKDIR=/data env PIDFILE=/data/tmp/pids/unicorn.pid env CFGFILE=/data/config/unicorn.rb env CHOWN=deploy:deploy respawn script trap "start-stop-daemon --signal HUP --stop --pidfile $PIDFILE" HUP [ -e $PIDFILE ] && { pid=$(cat $PIDFILE) while kill -0 $pid &>/dev/null; do sleep 2; done } || { start-stop-daemon --start --pidfile "$PIDFILE" --chdir "$WORKDIR" --chuid "$CHOWN" --exec "$WORKDIR/bin/unicorn.sh" -- -c "$CFGFILE" } end script pre-stop script [ -e $PIDFILE ] && kill -0 $(cat $PIDFILE) &>/dev/null && { start-stop-daemon --signal USR2 --stop --pidfile "$PIDFILE" start # don't send TERM and KILL! } end script