#!/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=/var/run/maxscale/maxscale.pid export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64/maxscale/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 /usr/bin/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=/usr/bin/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 /var/log/maxscale ] then mkdir -p /var/log/maxscale fi if [ ! -d /var/cache/maxscale ] then mkdir -p /var/cache/maxscale fi if [ ! -d /var/lib/maxscale ] then mkdir -p /var/lib/maxscale fi if [ ! -d /var/run/maxscale ] then mkdir -p /var/run/maxscale fi chown -R maxscale:maxscale /var/log/maxscale chown -R maxscale:maxscale /var/lib/maxscale chown -R maxscale:maxscale /var/cache/maxscale chown -R maxscale:maxscale /var/run/maxscale chmod 0755 /var/log/maxscale chmod 0755 /var/lib/maxscale chmod 0755 /var/cache/maxscale chmod 0755 /var/run/maxscale ulimit -HSn 65535 echo -n "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 checkproc $DAEMON rc_status -v # log_end_msg $? } stop() { echo -n "Stopping MaxScale" maxscale_wait_stop rc_status -v } reload() { echo -n "Reloading MaxScale" kill -HUP $(cat "$MAXSCALE_PIDFILE") rc_status -v } maxscale_wait_stop() { PIDTMP=$(pidofproc -p "$MAXSCALE_PIDFILE" "$DAEMON") kill -TERM "${PIDTMP:-}" 2> /dev/null; if [ -n "${PIDTMP:-}" ] && kill -0 "${PIDTMP:-}" >/dev/null 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 ] && echo -n "." 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 echo -n "Checking MaxScale" checkproc $DAEMON rc_status -v ;; restart) stop start ;; reload) reload RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|status|restart|reload}" ;; esac exit $RETVAL