188 lines
3.9 KiB
Bash
188 lines
3.9 KiB
Bash
#!/bin/sh
|
|
### BEGIN INIT INFO
|
|
# Provides: rabbitmq-server
|
|
# Required-Start: $remote_fs $network
|
|
# Required-Stop: $remote_fs $network
|
|
# Default-Start: 2 3 4 5
|
|
# Default-Stop: 0 1 6
|
|
# Description: RabbitMQ broker
|
|
# Short-Description: Enable AMQP service provided by RabbitMQ broker
|
|
### END INIT INFO
|
|
|
|
PATH=/sbin:/usr/sbin:/bin:/usr/bin
|
|
NAME=rabbitmq-server
|
|
DAEMON=/usr/sbin/${NAME}
|
|
CONTROL=/usr/sbin/rabbitmqctl
|
|
DESC="RabbitMQ Messaging Server"
|
|
USER=rabbitmq
|
|
ROTATE_SUFFIX=
|
|
INIT_LOG_DIR=/var/log/rabbitmq
|
|
PID_FILE=/var/run/rabbitmq/pid
|
|
|
|
|
|
test -x $DAEMON || exit 0
|
|
test -x $CONTROL || exit 0
|
|
|
|
RETVAL=0
|
|
set -e
|
|
|
|
[ -f /etc/default/${NAME} ] && . /etc/default/${NAME}
|
|
|
|
#. /lib/lsb/init-functions
|
|
#. /lib/init/vars.sh
|
|
. /etc/sysconfig/rc
|
|
. ${rc_functions}
|
|
|
|
ensure_pid_dir () {
|
|
PID_DIR=`dirname ${PID_FILE}`
|
|
if [ ! -d ${PID_DIR} ] ; then
|
|
mkdir -p ${PID_DIR}
|
|
chown -R ${USER}:${USER} ${PID_DIR} || rmdir ${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
|
|
RETVAL=0
|
|
ensure_pid_dir
|
|
set +e
|
|
RABBITMQ_PID_FILE=$PID_FILE start-stop-daemon --quiet \
|
|
--chuid rabbitmq --start --exec $DAEMON \
|
|
--pidfile "$RABBITMQ_PID_FILE" --background
|
|
$CONTROL wait $PID_FILE >/dev/null 2>&1
|
|
RETVAL=$?
|
|
set -e
|
|
if [ $RETVAL != 0 ] ; then
|
|
remove_pid
|
|
fi
|
|
else
|
|
RETVAL=3
|
|
fi
|
|
}
|
|
|
|
stop_rabbitmq () {
|
|
status_rabbitmq quiet
|
|
if [ $RETVAL = 0 ] ; then
|
|
set +e
|
|
$CONTROL stop ${PID_FILE} > ${INIT_LOG_DIR}/shutdown_log 2> ${INIT_LOG_DIR}/shutdown_err
|
|
RETVAL=$?
|
|
set -e
|
|
if [ $RETVAL = 0 ] ; then
|
|
remove_pid
|
|
fi
|
|
else
|
|
RETVAL=3
|
|
fi
|
|
}
|
|
|
|
status_rabbitmq() {
|
|
set +e
|
|
if [ "$1" != "quiet" ] ; then
|
|
$CONTROL status 2>&1
|
|
else
|
|
$CONTROL status > /dev/null 2>&1
|
|
fi
|
|
if [ $? != 0 ] ; then
|
|
RETVAL=3
|
|
fi
|
|
set -e
|
|
}
|
|
|
|
rotate_logs_rabbitmq() {
|
|
set +e
|
|
$CONTROL -q rotate_logs ${ROTATE_SUFFIX}
|
|
if [ $? != 0 ] ; then
|
|
RETVAL=1
|
|
fi
|
|
set -e
|
|
}
|
|
|
|
restart_running_rabbitmq () {
|
|
status_rabbitmq quiet
|
|
if [ $RETVAL = 0 ] ; then
|
|
restart_rabbitmq
|
|
else
|
|
log_warning_msg "${DESC} not running"
|
|
fi
|
|
}
|
|
|
|
restart_rabbitmq() {
|
|
stop_rabbitmq
|
|
start_rabbitmq
|
|
}
|
|
|
|
restart_end() {
|
|
if [ $RETVAL = 0 ] ; then
|
|
echo_ok
|
|
else
|
|
boot_mesg "Failed to restart ${NAME}" ${FAILURE}
|
|
echo_failure
|
|
fi
|
|
}
|
|
|
|
start_stop_end() {
|
|
case "$RETVAL" in
|
|
0)
|
|
[ -x /sbin/initctl ] && /sbin/initctl emit --no-wait "${NAME}-${1}"
|
|
echo_ok
|
|
;;
|
|
3)
|
|
log_warning_msg "${DESC} already ${1}"
|
|
echo_ok
|
|
RETVAL=0
|
|
;;
|
|
*)
|
|
log_warning_msg "FAILED - check ${INIT_LOG_DIR}/startup_\{log, _err\}"
|
|
echo_failure
|
|
;;
|
|
esac
|
|
}
|
|
|
|
case "$1" in
|
|
start)
|
|
boot_mesg "Starting ${DESC} ${NAME}" ${NORMAL}
|
|
start_rabbitmq
|
|
start_stop_end "running"
|
|
;;
|
|
stop)
|
|
boot_mesg "Stopping ${DESC} ${NAME}" ${NORMAL}
|
|
stop_rabbitmq
|
|
start_stop_end "stopped"
|
|
;;
|
|
status)
|
|
status_rabbitmq
|
|
;;
|
|
rotate-logs)
|
|
boot_mesg "Rotating log files for ${DESC}: ${NAME}..."
|
|
rotate_logs_rabbitmq
|
|
if [ $RETVAL = 0 ] ; then
|
|
echo_ok
|
|
else
|
|
echo_failure
|
|
fi
|
|
;;
|
|
force-reload|reload|restart)
|
|
boot_mesg "Restarting ${DESC} ${NAME}" ${NORMAL}
|
|
restart_rabbitmq
|
|
restart_end
|
|
;;
|
|
try-restart)
|
|
boot_mesg "Restarting ${DESC} ${NAME}" ${NORMAL}
|
|
restart_running_rabbitmq
|
|
restart_end
|
|
;;
|
|
*)
|
|
echo "Usage: $0 {start|stop|status|rotate-logs|restart|try-restart|reload|force-reload}" >&2
|
|
RETVAL=1
|
|
;;
|
|
esac
|
|
|
|
exit $RETVAL
|