Files
MaxScale/etc/ubuntu/init.d/maxscale.in
Markus Makela 8ba14ee4ee Fixed init script issue on Ubuntu
The init script split the command and the arguments with double quotes causing
the service to run as root instead of the maxscale user.
2016-01-19 19:29:25 +02:00

178 lines
4.4 KiB
Bash
Executable File

#!/bin/bash
#
# maxscale: The MariaDB Corporation MaxScale database proxy
#
# description: MaxScale provides database specific proxy functionality
#
# processname: maxscale
#
### BEGIN INIT INFO
# Provides: maxscale
# Required-Start: $syslog $local_fs
# Required-Stop: $syslog $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: The maxscale database proxy
# Description: MaxScale is a database proxy server that can be used to front end
# database clusters offering different routing, filtering and protocol choices
### END INIT INFO
#############################################
# MaxScale HOME, PIDFILE, LIB
#############################################
export MAXSCALE_PIDFILE=@MAXSCALE_VARDIR@/run/maxscale/maxscale.pid
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:@CMAKE_INSTALL_PREFIX@/@MAXSCALE_LIBDIR@/maxscale
###############################
# LSB Exit codes (non-Status)
###############################
_RETVAL_GENERIC=1
_RETVAL_NOT_INSTALLED=5
_RETVAL_NOT_RUNNING=7
###############################
# LSB Status action Exit codes
###############################
_RETVAL_STATUS_OK=0
_RETVAL_STATUS_NOT_RUNNING=3
# Sanity checks.
[ -x @CMAKE_INSTALL_PREFIX@/@MAXSCALE_BINDIR@/maxscale ] || exit $_RETVAL_NOT_INSTALLED
# Source additional command line arguments.
[ -f /etc/default/maxscale ] && . /etc/default/maxscale
#################################
# stop/start/status related vars
#################################
NAME=maxscale
DAEMON=@CMAKE_INSTALL_PREFIX@/@MAXSCALE_BINDIR@/maxscale
DAEMON_OPTS="--user=maxscale $MAXSCALE_OPTIONS"
# Source function library.
. /lib/lsb/init-functions
# we can rearrange this easily
processname=maxscale
servicename=maxscale
RETVAL=0
start() {
if [ ! -d @MAXSCALE_VARDIR@/log/maxscale ]
then
mkdir -p @MAXSCALE_VARDIR@/log/maxscale
fi
if [ ! -d @MAXSCALE_VARDIR@/cache/maxscale ]
then
mkdir -p @MAXSCALE_VARDIR@/cache/maxscale
fi
if [ ! -d @MAXSCALE_VARDIR@/lib/maxscale ]
then
mkdir -p @MAXSCALE_VARDIR@/lib/maxscale
fi
if [ ! -d @MAXSCALE_VARDIR@/run/maxscale ]
then
mkdir -p @MAXSCALE_VARDIR@/run/maxscale
fi
chown -R maxscale:maxscale @MAXSCALE_VARDIR@/log/maxscale
chown -R maxscale:maxscale @MAXSCALE_VARDIR@/lib/maxscale
chown -R maxscale:maxscale @MAXSCALE_VARDIR@/cache/maxscale
chown -R maxscale:maxscale @MAXSCALE_VARDIR@/run/maxscale
chmod 0755 @MAXSCALE_VARDIR@/log/maxscale
chmod 0755 @MAXSCALE_VARDIR@/lib/maxscale
chmod 0755 @MAXSCALE_VARDIR@/cache/maxscale
chmod 0755 @MAXSCALE_VARDIR@/run/maxscale
log_daemon_msg "Starting MaxScale"
start_daemon -p "$MAXSCALE_PIDFILE" $DAEMON $DAEMON_OPTS 2> /dev/null > /dev/null
sleep 2
status_of_proc -p "$MAXSCALE_PIDFILE" "$DAEMON" $NAME
log_end_msg $?
}
stop() {
log_daemon_msg "Stopping MaxScale"
maxscale_wait_stop
log_end_msg $?
}
reload() {
log_daemon_msg "Reloading MaxScale"
kill -HUP $(cat "$MAXSCALE_PIDFILE")
log_end_msg $?
}
maxscale_wait_stop() {
PIDTMP=$(pidofproc -p "$MAXSCALE_PIDFILE" "$DAEMON")
kill -TERM "${PIDTMP:-}" 2> /dev/null;
if [ -n "${PIDTMP:-}" ] && kill -0 "${PIDTMP:-}" 2> /dev/null; then
local i=0
while kill -0 "${PIDTMP:-}" 2> /dev/null; do
if [ $i = '60' ]; then
break
STATUS=2
fi
[ "$VERBOSE" != no ] && log_progress_msg "."
sleep 1
i=$(($i+1))
done
return $STATUS
else
return $STATUS
fi
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
status)
# return 0 on success
# return 3 on any error
log_daemon_msg "Checking MaxScale"
status_of_proc -p "$MAXSCALE_PIDFILE" "$DAEMON" $NAME
RETVAL=$?
if [ $RETVAL -ne 0 ]; then
[ $RETVAL -eq 1 ]
RETVAL=$_RETVAL_STATUS_NOT_RUNNING
else
RETVAL=$_RETVAL_STATUS_OK
fi
log_end_msg $RETVAL
;;
restart)
stop
start
;;
reload)
reload
RETVAL=$?
;;
*)
echo $"Usage: $0 {start|stop|status|restart|reload}"
;;
esac
exit $RETVAL