| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175 | #!/bin/sh### BEGIN INIT INFO# Provides:		celerybeat# Required-Start:	# Required-Stop:	# Default-Start:	2 3 4 5# Default-Stop:		1# Short-Description:	celery periodic task scheduler### END INIT INFO# To use this with Django set your DJANGO_PROJECT_DIR in /etc/default/celeryd:##   echo "DJANGO_PROJECT_DIR=/opt/Myapp" > /etc/default/celeryd## The django project dir is the directory that contains settings and# manage.py.# celerybeat uses the celeryd default file by default, but you can also# add a /etc/default/celerybeat file to set different settings for celerybeat.set -eDJANGO_SETTINGS_MODULE=settingsCELERYBEAT_PID_FILE="/var/run/celerybeat.pid"CELERYBEAT_LOG_FILE="/var/log/celerybeat.log"CELERYBEAT_LOG_LEVEL="INFO"DEFAULT_CELERYBEAT="celerybeat"# /etc/init.d/ssh: start and stop the celery task worker daemon.if test -f /etc/default/celeryd; then    . /etc/default/celerydfiif test -f /etc/default/celerybeat; then    . /etc/default/celerybeatfiexport DJANGO_SETTINGS_MODULEexport DJANGO_PROJECT_DIRif [ -z "$CELERYBEAT" ]; then    if [ ! -z "$DJANGO_PROJECT_DIR" ]; then        CELERYBEAT="$DJANGO_PROJECT_DIR/manage.py"        CELERYBEAT_OPTS="celerybeat $CELERYBEAT_OPTS"    else        CELERYBEAT=$DEFAULT_CELERYBEAT    fifi. /lib/lsb/init-functionscd $DJANGO_PROJECT_DIRCELERYBEAT_OPTS="$CELERYBEAT_OPTS -f $CELERYBEAT_LOG_FILE -l $CELERYBEAT_LOG_LEVEL"if [ -n "$2" ]; then    CELERYBEAT_OPTS="$CELERYBEAT_OPTS $2"fi# Extra start-stop-daemon options, like user/group.if [ -n "$CELERYBEAT_USER" ]; then    DAEMON_OPTS="$DAEMON_OPTS --chuid $CELERYBEAT_USER"fiif [ -n "$CELERYBEAT_GROUP" ]; then    DAEMON_OPTS="$DAEMON_OPTS --group $CELERYBEAT_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"    if [ -z "$DJANGO_PROJECT_DIR" ]; then        CELERYBEAT="$VIRTUALENV/bin/$CELERYBEAT"    fifiif [ -f "$CELERYBEAT" -a ! -x "$CELERYBEAT" ]; then    echo "ERROR: $CELERYBEAT is not executable."    echo "Please make it executable by doing: chmod +x '$CELERYBEAT'"    echo "celerybeat is disabled"    exitficase "$1" in  start)    check_dev_null    log_daemon_msg "Starting celery periodic task scheduler" "celerybeat"    if start-stop-daemon --start $DAEMON_OPTS --quiet --oknodo --background --chdir $DJANGO_PROJECT_DIR --make-pidfile --pidfile $CELERYBEAT_PID_FILE --exec $CELERYBEAT -- $CELERYBEAT_OPTS; then        log_end_msg 0    else        log_end_msg 1    fi    ;;  stop)    log_daemon_msg "Stopping celery periodic task scheduler" "celerybeat"    if start-stop-daemon --stop --quiet --oknodo --pidfile $CELERYBEAT_PID_FILE; then log_end_msg 0 else        rm -f "$CELERYBEAT_PID_FILE"        log_end_msg 1    fi    ;;  reload|force-reload)    echo "Use start+stop"    ;;  restart)    log_daemon_msg "Restarting celery periodic task scheduler" "celerybeat"    start-stop-daemon --stop --quiet --oknodo --retry 30 --pidfile $CELERYBEAT_PID_FILE    check_dev_null log_end_msg    if start-stop-daemon --start $DAEMON_OPTS --quiet --oknodo --background --chdir $DJANGO_PROJECT_DIR --make-pidfile --pidfile $CELERYBEAT_PID_FILE --exec $CELERYBEAT -- $CELERYBEAT_OPTS; then        log_end_msg 0    else        log_end_msg 1    fi    ;;  try-restart)    log_daemon_msg "Restarting celery periodic task scheduler" "celerybeat"    set +e    start-stop-daemon --stop --quiet --retry 30 --pidfile $CELERYBEAT_PID_FILE    RET="$?"    set -e    case $RET in        0)		# old daemon stopped		check_dev_null log_end_msg		if start-stop-daemon --start $DAEMON_OPTS --quiet --oknodo --background --chdir $DJANGO_PROJECT_DIR --make-pidfile --pidfile $CELERYBEAT_PID_FILE --exec $CELERYBEAT -- $CELERYBEAT_OPTS; then		    log_end_msg 0		else		    log_end_msg 1		fi		;;	    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)	status_of_proc -p $CELERYBEAT_PID_FILE $CELERYBEAT celerybeat && exit 0 || exit $?	;;  *)	log_action_msg "Usage: /etc/init.d/celerybeat {start|stop|force-reload|restart|try-restart|status}"	exit 1esacexit 0
 |