# dbxd Script for starting up the PostgreSQL
# server in the daemon mode
#
#
# postgreSQL version is:
PGVERSION=8.0
NAME=dbxd
# Command issued start/stop/restart
action=""
# Get SDC configiration
# . $SDCHOME/.SdCrc
# Set defaults for port and database directory
POSTGRES_LOG="$SDCHOME/nuevo/logfiles/postgreslog"
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
then
# Check version of existing PGDATA
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
if [ "`uname`" = "Linux" ]; then
/bin/sh -c "$INITDB --pgdata=$PGDATA > /dev/null 2>&1" < /dev/null
fi
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
#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
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
}
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
}
start)
start
;;
stop)
stop
;;
*)
echo "Usage: $0 {start|stop|status|restart|condrestart|reload|force-reload}"
exit 1
esac
exit 0
Sent: Wed 11/9/2005 9:23 PM
To: Richard Huxton
Cc: surabhi.ahuja; pgsql-general@xxxxxxxxxxxxxx
Subject: Re: Postmaster failing to start on reboot
***********************
Your mail has been scanned by
InterScan VirusWall.
***********-***********
Richard Huxton
<dev@xxxxxxxxxxxx> writes:
> surabhi.ahuja wrote:
>>
So, I try starting postmaster. and it displays the following
error
>> message: HINT: If you're sure there are no old server
processes
>> still running, remove the shared memory block with the
command "ipcr
>> m", or just delete the file
>>
"/export/home1/sdc_image_pool/dbx/postmaster.pid".
>>
>> does
it means that i will have to delete the postmaster.pid file ..in
>>
such a scenarion always?
> No, only when it doesn't close down
properly. Check your system logs to
> see what happened.
Also, what
PG version is this exactly? More recent versions have better
defenses
against being fooled by stale postmaster.pid files. It matters
what
postmaster startup script you're using,
too.
regards, tom
lane