#! /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