2024-02-21 13:47:54 +06:00

202 lines
3.6 KiB
Bash
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/sh
# pgpool This is the init script for starting up pgpool-II
#
# chkconfig: - 64 36
# description: Starts and stops the pgpool daemon
# processname: pgpool
# pidfile: /run/pgpool.pid
#
# v1.0.0 Devrim GUNDUZ <devrim@CommandPrompt.com>
# - Initial version of Red Hat / Fedora init script
#
# v2.2 Devrim GUNDUZ <devrim@CommandPrompt.com>
# - New and improved version which has some fixes.
#
# v2.2.5 Devrim GUNDUZ <devrim@CommandPrompt.com>
# - Fix logging.
if [ -r /etc/sysconfig/pgpool ]; then
. /etc/sysconfig/pgpool
fi
# Source function library.
INITD=/etc/rc.d/init.d
. $INITD/functions
# Get function listing for cross-distribution logic.
TYPESET=`typeset -f|grep "declare"`
# Get config.
. /etc/sysconfig/network
# Check that networking is up.
# We need it for pgpool
[ "${NETWORKING}" = "no" ] && exit 0
# Find the name of the script
NAME=`basename $0`
if [ ${NAME:0:1} = "S" -o ${NAME:0:1} = "K" ]
then
NAME=${NAME:3}
fi
# For SELinux we need to use 'runuser' not 'su'
if [ -x /sbin/runuser ]
then
SU=runuser
else
SU=su
fi
# Set defaults for configuration variables
PGPOOLENGINE=/usr/bin
PGPOOLDAEMON=$PGPOOLENGINE/pgpool
PGPOOLCONF=/etc/pgpool-II/pgpool.conf
PGPOOLPIDDIR=/run/pgpool
PGPOOLLOG=/var/log/pgpool.log
test -x $PGPOOLDAEMON || exit 5
# Check whether the config file exists or not
if [ ! -r $PGPOOLCONF ]
then
echo "$PGPOOLCONF not found"
RETVAL=1
failure
exit
fi
# Create the log file if it does not exist
if [ ! -x $PGPOOLLOG ]
then
touch $PGPOOLLOG
chown postgres: $PGPOOLLOG
fi
if [ ! -d $PGPOOLPIDDIR ]
then
mkdir $PGPOOLPIDDIR
chown postgres: $PGPOOLPIDDIR
fi
script_result=0
start(){
pid=`pidof -s "$PGPOOLDAEMON"`
if [ $pid ]
then
echo "pgpool is already running with pid $pid"
failure "$PGPOQL_START"
echo
script_result=1
exit 1
fi
PGPOOL_START=$"Starting ${NAME} service: "
echo -n "$PGPOOL_START"
$SU -l postgres -c "$PGPOOLDAEMON -f $PGPOOLCONF $OPTS & " >> "$PGPOOLLOG" 2>&1 < /dev/null
sleep 2
pid=`pidof -s "$PGPOOLDAEMON"`
if [ $pid ]
then
success "$PGPOOL_START"
touch /var/lock/subsys/${NAME}
echo
else
failure "$PGPOQL_START"
echo
script_result=1
fi
}
stop(){
echo -n $"Stopping ${NAME} service: "
if [ $UID -ne 0 ]; then
RETVAL=1
failure
else
killproc /usr/bin/pgpool
# $PGPOOLDAEMON stop & >> "$PGPOOLLOG" 2>&1 < /dev/null
RETVAL=$?
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/${NAME}
fi;
echo
return $RETVAL
}
switch() {
echo -n $"Sending switchover request to $NAME "
$PGPOOLDAEMON -f $PGPOOLCONF switch >> "$PGPOOLLOG" 2>&1 < /dev/null
RETVAL=$?
echo
if [ $RETVAL -eq 0 ]
then
echo_success
else
echo_failure
fi
echo
}
restart(){
stop
start
}
reload(){
echo -n $"Reloading ${NAME}: "
if [ -n "`pidfileofproc $PGPOOLDAEMON`" ] ; then
killproc $PGPOOLDAEMON -HUP
else
failure $"Reloading ${NAME}"
fi
RETVAL=$?
echo
}
condrestart(){
[ -e /var/lock/subsys/${NAME} ] && restart
}
condstop(){
[ -e /var/lock/subsys/${NAME} ] && stop
}
# See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
switch)
switch
;;
status)
status pgpool
script_result=$?
;;
restart)
restart
;;
reload|force-reload)
reload
;;
condrestart)
condrestart
;;
condstop)
condstop
;;
*)
echo $"Usage: $0 {start|stop|switch|status|restart|condrestart|condstop|reload|force-reload}"
exit 1
esac
exit $script_result