
The init script split the command and the arguments with double quotes causing the service to run as root instead of the maxscale user.
178 lines
4.4 KiB
Bash
Executable File
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
|