| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 | #!/bin/bash### BEGIN INIT INFO# Provides:		celeryd# Required-Start:	# Required-Stop:	# Default-Start:	2 3 4 5# Default-Stop:		1# Short-Description:	celery task worker daemon### END INIT INFO# OS X Debug replacements to lsb-functions.#log_action_msg () {#    echo $*#}#log_daemon_msg () {#    echo $*#}#log_end_msg () {#    if [ $1 -eq 0 ]; then#        echo "ok"#    else#        echo "failed!"#    fi#}set -eCELERYD_PID_FILE="/var/run/celeryd-%n.pid"CELERYD_LOG_FILE="/var/log/celeryd-%n.log"CELERYD_LOG_LEVEL="INFO"CELERYD_NUM_WORKERS=2DEFAULT_CELERYD="celeryd"# /etc/init.d/celeryd-multi start and stop the celery task worker daemon.if test -f /etc/default/celeryd; then    . /etc/default/celerydfiexport CELERY_LOADER. /lib/lsb/init-functionsCELERYD_OPTS="$CELERYD_OPTS -f $CELERYD_LOG_FILE -l $CELERYD_LOG_LEVEL"if [ -n "$2" ]; then    CELERYD_OPTS="$CELERYD_OPTS $2"fi# Extra start-stop-daemon options, like user/group.if [ -n "$CELERYD_USER" ]; then    DAEMON_OPTS="$DAEMON_OPTS --chuid $CELERYD_USER"fiif [ -n "$CELERYD_GROUP" ]; then    DAEMON_OPTS="$DAEMON_OPTS --group $CELERYD_GROUP"fi# Are we running from init?run_by_init() {    ([ "$previous" ] && [ "$runlevel" ]) || [ "$runlevel" = S ]}check_dev_null() {    if [ ! -c /dev/null ]; then	if [ "$1" = log_end_msg ]; then	    log_end_msg 1 || true	fi	if ! run_by_init; then	    log_action_msg "/dev/null is not a character device!"	fi	exit 1    fi}export PATH="${PATH:+$PATH:}/usr/sbin:/sbin"if [ ! -z "$VIRTUALENV" ]; then    export PATH="$VIRTUALENV/bin:$PATH"    CELERYD="$VIRTUALENV/bin/$CELERYD"fiif [ -f "$CELERYD" -a ! -x "$CELERYD" ]; then    echo "ERROR: $CELERYD is not executable."    echo "Please make it executable by doing: chmod +x '$CELERYD'"    echo "celeryd is disabled"    exitfiWORKERS=$CELERYD_NUM_WORKERSstop_worker () {    cmd="start-stop-daemon  --stop --quiet $* --pidfile $CELERYD_PID_FILE"    w=`celeryd-multi start $WORKERS --cmd="start-stop-daemon --stop \                                        --quiet $* \                                        --pidfile $CELERYD_PID_FILE"`    for wname in `celeryd-multi names $WORKERS $CELERYD_OPTS`; do        log_daemon_msg "Stopping celery task worker" "$wname"        stopcmd=`celeryd-multi get "$wname" $WORKERS --cmd="$cmd" $CELERYD_OPTS`        if `$stopcmd`; then            log_end_msg 0        else:            log_end_msg 1        fi    done}start_worker () {    check_dev_null    cmd="start-stop-daemon --start $DAEMON_OPTS \                                    --quiet --oknodo --background \                                    --make-pidfile $* \                                    --pidfile $CELERYD_PID_FILE \                                    --exec $CELERYD --"    for wname in `celeryd-multi names $WORKERS $CELERYD_OPTS`; do        log_daemon_msg "Starting celery task worker" "$wname"        startcmd=`celeryd-multi get "$wname" $WORKERS --cmd="$cmd" $CELERYD_OPTS`        if `$startcmd`; then            log_end_msg 0        else            log_end_msg 1        fi    done}case "$1" in  start)    start_worker    ;;  stop)    stop_worker --oknodo    ;;  reload|force-reload)    echo "Use start+stop"    ;;  restart)    stop_worker --retry 30 --oknodo    start_worker    ;;  try-restart)    log_daemon_msg "Restarting celery task worker server" "celeryd"    set +e    stop_worker --retry 30    RET="$?"    set -e    case $RET in        0)		# old daemon stopped		check_dev_null log_end_msg        start_worker		;;	    1)		# daemon not running		log_progress_msg "(not running)"		log_end_msg 0		;;	    *)		# failed to stop		log_progress_msg "(failed to stop)"		log_end_msg 1		;;	esac	;;  status)    pidfiles=`celeryd-multi expand "$CELERYD_PID_FILE" $WORKERS $DAEMON_OPTS`    for pidfile in $pidfiles; do        status_of_proc -p $pidfile $CELERYD celeryd && exit 0 || exit $?    done	;;  *)	log_action_msg "Usage: /etc/init.d/celeryd-multi {start|stop|force-reload|restart|try-restart|status}"	exit 1esacexit 0
 |