diff options
Diffstat (limited to 'rabbitmq-server.init')
-rw-r--r-- | rabbitmq-server.init | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/rabbitmq-server.init b/rabbitmq-server.init index 065e2a4..a7e57e8 100644 --- a/rabbitmq-server.init +++ b/rabbitmq-server.init @@ -14,6 +14,9 @@ # Short-Description: Enable AMQP service provided by RabbitMQ broker ### END INIT INFO +# Source function library. +. /etc/init.d/functions + PATH=/sbin:/usr/sbin:/bin:/usr/bin NAME=rabbitmq-server DAEMON=/usr/sbin/${NAME} @@ -24,6 +27,7 @@ ROTATE_SUFFIX= INIT_LOG_DIR=/var/log/rabbitmq PID_FILE=/var/run/rabbitmq/pid +START_PROG="daemon" LOCK_FILE=/var/lock/subsys/$NAME test -x $DAEMON || exit 0 @@ -32,15 +36,34 @@ test -x $CONTROL || exit 0 RETVAL=0 set -e +[ -f /etc/default/${NAME} ] && . /etc/default/${NAME} + +ensure_pid_dir () { + PID_DIR=`dirname ${PID_FILE}` + if [ ! -d ${PID_DIR} ] ; then + mkdir -p ${PID_DIR} + chown -R ${USER}:${USER} ${PID_DIR} + chmod 755 ${PID_DIR} + fi +} + +remove_pid () { + rm -f ${PID_FILE} + rmdir `dirname ${PID_FILE}` || : +} + start_rabbitmq () { status_rabbitmq quiet if [ $RETVAL = 0 ] ; then echo RabbitMQ is currently running else RETVAL=0 + ensure_pid_dir set +e - setsid sh -c "RABBITMQ_PID_FILE=$PID_FILE $DAEMON > \ - ${INIT_LOG_DIR}/startup_log 2> ${INIT_LOG_DIR}/startup_err" & + RABBITMQ_PID_FILE=$PID_FILE $START_PROG $DAEMON \ + > "${INIT_LOG_DIR}/startup_log" \ + 2> "${INIT_LOG_DIR}/startup_err" \ + 0<&- & $CONTROL wait $PID_FILE >/dev/null 2>&1 RETVAL=$? set -e @@ -52,7 +75,7 @@ start_rabbitmq () { fi ;; *) - rm -f $PID_FILE + remove_pid echo FAILED - check ${INIT_LOG_DIR}/startup_\{log, _err\} RETVAL=1 ;; @@ -64,11 +87,11 @@ stop_rabbitmq () { status_rabbitmq quiet if [ $RETVAL = 0 ] ; then set +e - $CONTROL stop > ${INIT_LOG_DIR}/shutdown_log 2> ${INIT_LOG_DIR}/shutdown_err + $CONTROL stop ${PID_FILE} > ${INIT_LOG_DIR}/shutdown_log 2> ${INIT_LOG_DIR}/shutdown_err RETVAL=$? set -e if [ $RETVAL = 0 ] ; then - rm -f $PID_FILE + remove_pid if [ -n "$LOCK_FILE" ] ; then rm -f $LOCK_FILE fi |