#!/bin/sh # # 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_HOME=@INSTALL_DIR@ export MAXSCALE_PIDFILE=$MAXSCALE_HOME/log/maxscale.pid export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$MAXSCALE_HOME/lib ############################### # 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 $MAXSCALE_HOME/bin/maxscale ] || exit $_RETVAL_NOT_INSTALLED ################################# # stop/start/status related vars ################################# NAME=maxscale DAEMON=$MAXSCALE_HOME/bin/maxscale # Source function library. . /lib/lsb/init-functions # we can rearrange this easily processname=maxscale servicename=maxscale RETVAL=0 start() { log_daemon_msg "Starting MaxScale" start_daemon -p $MAXSCALE_PIDFILE $DAEMON 2> /dev/null sleep 2 status_of_proc -p $MAXSCALE_PIDFILE $DAEMON $NAME log_end_msg $? } stop() { log_daemon_msg "Stopping MaxScale" killproc -p $PIDFILE $DAEMON 2>&1 /dev/null maxscale_wait_stop log_end_msg $? } reload() { log_daemon_msg "Reloading MaxScale" killproc -p $MAXSCALE_PIDFILE $DAEMON 1 log_end_msg $? } maxscale_wait_stop() { PIDTMP=$(pidofproc -p $MAXSCALE_PIDFILE $MAXSCALE_HOME/bin/maxscale) 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