136 lines
3.6 KiB
Text
136 lines
3.6 KiB
Text
#!/sbin/runscript
|
|
# Copyright 1999-2010 Gentoo Foundation
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
# $Header: /var/cvsroot/gentoo-x86/dev-db/postgresql-server/files/Attic/postgresql.init-8.1-r1,v 1.2 2010/07/11 11:53:55 patrick Exp $
|
|
|
|
opts="${opts} reload"
|
|
|
|
depend() {
|
|
use net
|
|
if [ -L /etc/eselect/postgresql/service ] ; then
|
|
local p_service="$(for f in /etc/eselect/postgresql/service/* ; do . $f ; done ; echo $postgres_service )"
|
|
test "${p_service}" = "${SVCNAME}" && provide postgresql
|
|
fi
|
|
}
|
|
|
|
checkconfig() {
|
|
if [ ! -d "$PGDATA" ] ; then
|
|
eerror "Directory not found: $PGDATA"
|
|
eerror "Please make sure that PGDATA points to the right path."
|
|
eerror "You can run 'emerge postgresql-server --config' to setup a new database cluster."
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
start() {
|
|
checkconfig || return 1
|
|
|
|
ebegin "Starting PostgreSQL"
|
|
|
|
if [ -f "$PGDATA/postmaster.pid" ] ; then
|
|
rm -f "$PGDATA/postmaster.pid"
|
|
fi
|
|
|
|
local retval
|
|
|
|
su -l ${PGUSER} \
|
|
-c "env PGDATA=\"${PGDATA}\" PGPORT=\"${PGPORT}\" ${PG_EXTRA_ENV} /usr/lib/postgresql-8.1/bin/pg_ctl start ${WAIT_FOR_START} -s -o '--silent-mode=true ${PGOPTS}'"
|
|
retval=$?
|
|
|
|
if [[ $retval != 0 ]] ; then
|
|
eend $retval
|
|
return $retval
|
|
fi
|
|
|
|
# The following is to catch the case of an already running server
|
|
# in which pg_ctl doesn't know to which server it connected to and
|
|
# falsely reports the server as 'up'
|
|
sleep 2
|
|
if [ ! -f "$PGDATA/postmaster.pid" ] ; then
|
|
eerror "The PID file doesn't exist but pg_ctl reported a running server."
|
|
eerror "Please check whether there is another server running on the same port or read the log-file."
|
|
eend 1
|
|
return 1
|
|
fi
|
|
|
|
local pid=$(grep "^[0-9]\+" "$PGDATA/postmaster.pid")
|
|
ps -p "${pid}" &> /dev/null
|
|
eend $?
|
|
}
|
|
|
|
stop() {
|
|
ebegin "Stopping PostgreSQL (this can take a few minutes)"
|
|
|
|
local retval
|
|
|
|
if [[ "${NICE_QUIT}" != "NO" ]] ; then
|
|
su -l ${PGUSER} \
|
|
-c "env PGDATA=\"${PGDATA}\" PGPORT=\"${PGPORT}\" ${PG_EXTRA_ENV} /usr/lib/postgresql-8.1/bin/pg_ctl stop ${WAIT_FOR_STOP} -s -m smart"
|
|
retval=$?
|
|
|
|
if [[ $retval == 0 ]] ; then
|
|
eend $retval
|
|
return $retval
|
|
fi
|
|
|
|
ewarn "Shutting down the server gracefully failed."
|
|
ewarn "Probably because some clients did not disconnect within 60 seconds."
|
|
else
|
|
ewarn "NICE_QUIT disabled."
|
|
ewarn "You really should have it enabled."
|
|
fi
|
|
|
|
if [[ "${RUDE_QUIT}" != "NO" ]] ; then
|
|
ewarn "RUDE_QUIT enabled."
|
|
ewarn "Going to shutdown the server anyway."
|
|
|
|
su -l ${PGUSER} \
|
|
-c "env PGDATA=\"${PGDATA}\" PGPORT=\"${PGPORT}\" ${PG_EXTRA_ENV} /usr/lib/postgresql-8.1/bin/pg_ctl stop ${WAIT_FOR_STOP} -s -m fast"
|
|
retval=$?
|
|
|
|
if [[ $retval == 0 ]] ; then
|
|
eend $retval
|
|
return $retval
|
|
fi
|
|
|
|
eerror "Failed to shutdown server."
|
|
else
|
|
ewarn "RUDE_QUIT disabled."
|
|
fi
|
|
|
|
if [[ "${FORCE_QUIT}" == "YES" ]] ; then
|
|
ewarn "FORCE_QUIT enabled."
|
|
ewarn "Forcing server to shutdown."
|
|
ewarn "A recover-run will be executed on the next startup."
|
|
|
|
su -l ${PGUSER} \
|
|
-c "env PGDATA=\"${PGDATA}\" PGPORT=\"${PGPORT}\" ${PG_EXTRA_ENV} /usr/lib/postgresql-8.1/bin/pg_ctl stop ${WAIT_FOR_STOP} -s -m immediate"
|
|
|
|
retval=$?
|
|
|
|
if [[ $retval == 0 ]] ; then
|
|
ewarn "Server forced down."
|
|
eend $retval
|
|
return $retval
|
|
fi
|
|
|
|
eerror "Forced shutdown failed!!!"
|
|
eerror "Something is wrong with your system."
|
|
eerror "Please take care of it manually."
|
|
eerror "Unable to stop server."
|
|
eend $retval
|
|
return $retval
|
|
else
|
|
ewarn "FORCE_QUIT disabled."
|
|
eerror "Unable to shutdown server."
|
|
eend 1
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
reload() {
|
|
ebegin "Reloading PostgreSQL configuration"
|
|
su -l ${PGUSER} \
|
|
-c "env PGDATA=\"${PGDATA}\" PGPORT=\"${PGPORT}\" ${PG_EXTRA_ENV} /usr/lib/postgresql-8.1/bin/pg_ctl reload -s"
|
|
eend $?
|
|
}
|