Scripts d'administration de Postgresql
Le script suivant, livré avec Postgresql, permet de lancer, arrêter
et redémarrer Postgresql. Il est nécessaire de le modifier pour rajouter
l'option -i, nécessaire pour l'utilisation de jdbc.
Exemple B.6. Script de lancement de Postgresql ( /etc/init.d/postgresql )
#! /bin/sh
#
# NOTE TO SYSTEM ADMINISTRATORS #
# To stop postgresql running, do
# ln -sf /bin/false /usr/lib/postgresql/bin/can_i_run
# To re-enable it, do
# rm /usr/lib/postgresql/bin/can_i_run
startup () {
. /etc/postgresql/postmaster.conf
touch ${POSTGRES_LOG:=/var/log/postgres.log}
chown postgres.postgres $POSTGRES_LOG
su - postgres -c /usr/lib/postgresql/bin/postgresql-startup
}
POSTMASTER=/usr/lib/postgresql/bin/postmaster
case "$1" in
start)
startup
;;
stop)
echo Stopping PostgreSQL postmaster.
start-stop-daemon --stop --verbose --exec ${POSTMASTER} || exit 0
;;
restart)
echo Restarting PostgreSQL postmaster.
start-stop-daemon --stop --oknodo --verbose --exec ${POSTMASTER}
sleep 3
startup
;;
force-reload)
echo Reload not supported by PostgreSQL - restarting postmaster.
start-stop-daemon --stop --oknodo --verbose --exec ${POSTMASTER}
sleep 3
startup
;;
reload)
echo PostgreSQL does not support a reload option.
exit 2
;;
*)
echo "Usage: /etc/init.d/postgresql {start|stop|restart}"
exit 1
;;
esac
exit 0
Exemple B.7. Script de lancement de Postgresql ( /usr/lib/postgresql/bin/postgresql-startup )
#! /bin/sh
## WARNING TO MAINTAINERS - DO NOT EDIT this file in debian/. It will be
## overwritten by debian/rules. Edit the .in template instead.
set -e
#
# Initialisation
#
# (This should set up values for POSTGRES_HOME and POSTGRES_DATA, which
# say where the library and database are. It should also set up DATEFORMAT
# which governs whether the backend sends back dates in European or
# American format, and the logging options.)
#
# This is NOT a configuration file.
# If you wish to change any values, the proper place to do so is in
# /etc/postgresql/postmaster.init. ANY CHANGES YOU MAKE TO THIS FILE
# WILL GET OVERWRITTEN BY THE NEXT INSTALLATION.
# To stop postgresql running, do
# ln -sf /bin/false /usr/lib/postgresql/bin/can_i_run
check_version () {
# compare the database format with the format expected by the software
dbformat=`cat ${PGDATA}/PG_VERSION 2>/dev/null`
if [ A${dbformat} != A${version} ]
then
if [ -z "${dbformat}" ]
then
echo The database framework has not yet been created. Use
echo initdb to do this.
else
echo The database is in an older format that cannot be read by
echo version ${version} of PostgreSQL.
echo
if [ -f /usr/lib/postgresql/dumpall/default_encoding ]
then
echo "The postinstallation script should attempt to
upgrade the database"
echo "automatically. If it fails, it must be done by hand."
else
echo Run postgresql-dump to dump the old database and to reload
echo it in the new format.
fi
echo "*** READ /usr/share/doc/postgresql/README.Debian.migration.gz
FIRST! ***"
fi
echo
echo The version ${version} postmaster cannot be started until
echo this is done.
exit 255
fi
}
obsolete_config () {
echo "
****************** Obsolete configuration files *****************
postmaster.init and pg_options in /etc/postgresql/ are obsolete.
Please update your configuration files by integrating your site-
specific changes with the new format in postmaster.conf and
postgresql.conf and delete or rename the old configuration files.
PostgreSQL cannot be started until you have done this.
*******************************************************************
"
exit 1
}
# Refuse to proceed if the old config files are still there
if [ -f /etc/postgresql/postmaster.init -o -f /etc/postgresql/pg_options ]
then
obsolete_config
exit 1
fi
. /etc/postgresql/postmaster.conf
export LANG PGDATESTYLE
if [ -z "${PGDATESTYLE}" ]
then
PGDATESTYLE=ISO,European
fi
PGDATA=${POSTGRES_DATA:-/var/lib/postgres/data}
PGLIB=/usr/lib/postgresql
export PGLIB PGDATA
POSTMASTER=${PGLIB}/bin/postmaster
version=7.1 # Note: this is not necessarily the same as the
# software version.
# Give administrators a means of not allowing postgresql to start:
# Link /usr/lib/postgresql/bin/can_i_run to /bin/false
if [ -x /usr/lib/postgresql/bin/can_i_run -a "$1" != dump_schema ]
then
if ! /usr/lib/postgresql/bin/can_i_run
then
echo PostgreSQL is temporarily disabled
echo
echo To enable it, remove /usr/lib/postgresql/bin/can_i_run \(or
echo link it to /bin/true\) and run \`/etc/init.d/postgresql start\'
echo
exit 1
fi
fi
# Make sure we have a database directory
if [ ! -d ${PGDATA} ]
then
echo No readable database directory for postgresql
exit 3
fi
if [ ! -d ${PGDATA}/base ]
then
echo There is no PostgreSQL database framework in $PGDATA.
echo Run initdb as the postgres user to create it
exit 3
fi
# First, check that the database is the right version
check_version
# Make sure that we don't try to start if the executable is missing.
if [ ! -x ${POSTMASTER} ]
then
echo No postmaster executable for postgresql
exit 3
fi
if [ -n "$PGPORT" ]
then
OPTIONS="-o '-p $PGPORT'"
fi
# Make sure there is no UNIX-socket file lurking around; this socket
# can get left behind if there is a system crash.
if [ -S /var/run/postgresql/.s.PGSQL.${PGPORT:=5432} ]
then
rm /var/run/postgresql/.s.PGSQL.${PGPORT}
fi
# Ready to go: stand clear...
echo Starting PostgreSQL postmaster.
cd ${POSTGRES_HOME}
echo /usr/lib/postgresql/bin/pg_ctl start -D ${PGDATA} -i
-l ${POSTGRES_LOG:=/var/log/postgres.log} ${OPTIONS}
/usr/lib/postgresql/bin/pg_ctl start -D ${PGDATA} -i -l ${POSTGRES_LOG} ${OPTIONS}
# If possible, increase the size of the kernel file table
fmaxfile=/proc/sys/kernel/file-max
if [ ! -r $fmaxfile ]
then
fmaxfile=/proc/sys/kernel/fs/file-max
if [ ! -r $fmaxfile ]
then
fmaxfile=
fi
fi
if [ -n "$fmaxfile" ]
then
fmax=`cat $fmaxfile`
if [ $fmax -lt ${KERNEL_FILE_MAX:=1032} ]
then
echo ${KERNEL_FILE_MAX} > $fmaxfile
fi
fi
# Give it a chance to get going
sleep 5
exit 0