hi,
in the script ithe statement to start and
stop postmsater as the root is commented. thats how i saw the script( has been
written by some one else)
will using 8.0.4 ensure proper starting and
stopping of postmsater.
what abt the case in which the system is
simply rebooted ...with postmsater already running)?
(attaching the script) again
thanks
regards
Surabhi
#! /bin/sh # dbxd Script for starting up the PostgreSQL # server in the daemon mode # #
# postgreSQL version is:
PGVERSION=8.0
# Name of the script
NAME=dbxd
# Command issued start/stop/restart
action="$1"
# Get SDC configiration
# . $SDCHOME/.SdCrc
# Set defaults for port and database directory
POSTGRES_LOG="$SDCHOME/nuevo/logfiles/postgreslog"
if [ ! -f $POSTGRES_LOG ]; then
touch $POSTGRES_LOG
chown sdc:200 $POSTGRES_LOG
chmod 777 $POSTGRES_LOG
fi
if [ "`uname`" = "Linux" ]; then
#DEVMACHINE=`file /export/dbsroot | grep -c directory`
POSTMASTER=/usr/bin/postmaster
PGCTL="/usr/bin/pg_ctl -w "
INITDB=/usr/bin/initdb
PGDATA=$SdC_IMAGE_POOL/dbx
PGPORT=5432
else
echo "Cannot launch POSTGRES , unknown OS"
echo " [ FAILED ]"
exit 1
fi
if [ "`uname`" = "Linux" ]; then
INITD=/etc/rc.d/init.d
. $INITD/functions
# Get config.
. /etc/sysconfig/network
fi
# Check that networking is up.
# Pretty much need it for postmaster.
if [ "`uname`" = "Linux" ]; then
[ "${NETWORKING}" = "no" ] && exit 0
fi
start(){
# Check for the PGDATA structure
if [ -f $PGDATA/PG_VERSION ] && [ -d $PGDATA/base ]
then
# Check version of existing PGDATA
INSTPG_VERSION=`cat $PGDATA/PG_VERSION`
if [ $INSTPG_VERSION != '8.0' -a $INSTPG_VERSION != '8.1' ]
then
echo "An old version of the database format was
found.\n"
exit 1
fi
else
# No existing PGDATA - call initdb
echo "Initializing database: "
#chmod 755 /var/lib/pgsql
if [ ! -d $PGDATA ]
then
mkdir -p $PGDATA
fi
chown $SDCUSER:$SDCUSER $PGDATA
chmod go-rwx $PGDATA
# Make sure the locale from the initdb is preserved for later
startups...
[ -f /etc/sysconfig/i18n ] && cp /etc/sysconfig/i18n
$PGDATA/../initdb.i18n
# Just in case no locale was set, use en_US on Linux
if [ "`uname`" = "Linux" ]; then
[ ! -f /etc/sysconfig/i18n ] && echo "LANG=en_US" >
$PGDATA/../initdb.i18n
fi
# Initialize the database
if [ "`uname`" = "Linux" ]; then
/bin/sh -c "$INITDB --pgdata=$PGDATA > /dev/null 2>&1"
< /dev/null
fi
# Modify original postgres settings so that local connection
are trusted
mv $PGDATA/pg_hba.conf $PGDATA/pg_hba.conf.orig
cat $PGDATA/pg_hba.conf.orig | sed "s/^local.*/local all
all trust/" > $PGDATA/pg_hba.conf
chown $SDCUSER:$SDCUSER $PGDATA/pg_hba.conf
chmod 600 $PGDATA/pg_hba.conf
rm $PGDATA/pg_hba.conf.orig
#Copy the configuration file to the database - TBD
#cp /export/home/sdc/database_scripts/config/postgresql.conf
$PGDATA/
#chown postgres:postgres $PGDATA/postgresql.conf
#chmod 600 $PGDATA/postgresql.conf
fi
# Check for postmaster already running...
# note that pg_ctl only looks at the data structures in PGDATA
# you really do need the pidof()
if [ "`uname`" = "Linux" ]; then
pid=`pidof -s postmaster`
else
pid=`ps -eaf | grep postmaster | grep -v grep | tail -1 | awk
'{print $2}'`
fi
if [ $pid ] && $PGCTL status -D $PGDATA > /dev/null 2>&1
then
echo "Postmaster already running."
else
if [ "`uname`" = "Linux" ]; then
#su -l postgres -s /bin/sh -c "$PGCTL -l $POSTGRES_LOG -D
$PGDATA -p $POSTMASTER -o '-p ${PGPORT}' start > /dev/null 2>&1" < /dev/null
# Chagne it to take port number - TBD
rm -f /tmp/.s.PGSQL.${PGPORT} > /dev/null
rm -f /tmp/.s.PGSQL.${PGPORT}.lock > /dev/null
/bin/sh -c "$PGCTL -l $POSTGRES_LOG -D $PGDATA -p
$POSTMASTER -o '-p ${PGPORT}' start > /dev/null 2>&1" < /dev/null
fi
sleep 1
if [ "`uname`" = "Linux" ]; then
pid=`pidof -s postmaster`
else
pid=`ps -eaf | grep postmaster | grep -v grep | tail -1 |
awk '{print $2}'`
fi
if [ $pid ]
then
#echo "success $PSQL_START"
echo_success
else
#echo "failure $PSQL_START"
echo_failure
fi
fi
}
stop(){
echo "Stopping ${NAME} service: "
if [ "`uname`" = "Linux" ]; then
#su -l postgres -s /bin/sh -c "$PGCTL stop -D $PGDATA -s -m fast" >
/dev/null 2>&1
/bin/sh -c "$PGCTL stop -D $PGDATA -s -m fast" > /dev/null 2>&1
fi
ret=$?
if [ $ret -eq 0 ]
then
#echo "success"
echo_success
else
echo_failure
if [ "`uname`" = "Linux" ]; then
#su -l postgres -s /bin/sh -c "$PGCTL stop -D $PGDATA -s -m
immediate" > /dev/null 2>&1
/bin/sh -c "$PGCTL stop -D $PGDATA -s -m immediate" >
/dev/null 2>&1
fi
fi
echo
}
case $action in
start)
start
;;
stop)
stop
;;
*)
echo "Usage: $0
{start|stop|status|restart|condrestart|reload|force-reload}"
exit 1
esac
exit 0
---------------------------(end of broadcast)--------------------------- TIP 2: Don't 'kill -9' the postmaster
