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