summaryrefslogtreecommitdiffstats
path: root/rabbitmq-server.init
diff options
context:
space:
mode:
Diffstat (limited to 'rabbitmq-server.init')
-rw-r--r--rabbitmq-server.init33
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