123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- #!/usr/bin/env bash
- ### BEGIN INIT INFO
- # Provides: emperor
- # Required-Start: $all
- # Required-Stop: $all
- # Default-Start: 2 3 4 5
- # Default-Stop: 0 1 6
- # Short-Description: uwsgi for wagtail
- # Description: uwsgi for wagtail
- ### END INIT INFO
- set -e
- PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
- DAEMON=/usr/local/bin/uwsgi
- RUN=/var/run/uwsgi
- CONFIG_DIR=/etc/uwsgi/vassals
- NAME=uwsgi
- DESC=emperor
- OWNER=root
- GROUP=root
- OP=$1
- [[ -x $DAEMON ]] || exit 0
- [[ -d $RUN ]] || mkdir $RUN && chown $OWNER.$GROUP $RUN
- do_pid_check()
- {
- local PIDFILE=$1
- [[ -f $PIDFILE ]] || return 0
- local PID=$(cat $PIDFILE)
- for p in $(pgrep $NAME); do
- [[ $p == $PID ]] && return 1
- done
- return 0
- }
- do_start()
- {
- local PIDFILE=$RUN/$NAME.pid
- local START_OPTS=" \
- --emperor $CONFIG_DIR \
- --pidfile $PIDFILE \
- --uid $OWNER --gid $GROUP \
- --daemonize /var/log/$NAME/uwsgi-emperor.log"
- if do_pid_check $PIDFILE; then
- $NAME $START_OPTS
- else
- echo "Already running!"
- fi
- }
- send_sig()
- {
- local PIDFILE=$RUN/$NAME.pid
- set +e
- [[ -f $PIDFILE ]] && kill $1 $(cat $PIDFILE) > /dev/null 2>&1
- set -e
- }
- wait_and_clean_pidfile()
- {
- local PIDFILE=$RUN/uwsgi.pid
- until do_pid_check $PIDFILE; do
- echo -n "";
- done
- rm -f $PIDFILE
- }
- do_stop()
- {
- send_sig -3
- wait_and_clean_pidfile
- }
- do_reload()
- {
- send_sig -1
- }
- case "$OP" in
- start)
- echo "Starting $DESC: "
- do_start
- echo "$NAME."
- ;;
- stop)
- echo -n "Stopping $DESC: "
- do_stop
- echo "$NAME."
- ;;
- reload)
- echo -n "Reloading $DESC: "
- do_reload
- echo "$NAME."
- ;;
- restart)
- echo "Restarting $DESC: "
- do_stop
- sleep 1
- do_start
- echo "$NAME."
- ;;
- *)
- N=/etc/init.d/$NAME
- echo "Usage: $N {start|stop|restart|reload}">&2
- exit 1
- ;;
- esac
- exit 0
|