#!/bin/sh # # PostgreSQL startup/shutdown script MAJOR=7.3 MINOR=.5 VERSION=$MAJOR$MINOR export VERSION PGSQLDIR=/pkg/postgresql/$VERSION/bin export PGSQLDIR PGDBHOME=/pkg/postgresql/base/$MAJOR export PGDBHOME PGUSER=postgres PGGROUP=postgres SCRIPTDIR=/pkg/postgresql/scripts if [ -e $PGDBHOME/postgresql.conf ] ; then PORT=`grep ^port $PGDBHOME/postgresql.conf | sed -r 's/^[^0-9]+([0-9]+)/\1/'` fi PORT=${PORT:=5432} PGTMPFILE=/tmp/.s.PGSQL.$PORT PATH=/sbin:/bin:/usr/sbin:/usr/bin:$PGSQLDIR export PATH LOG=$PGDBHOME/startup.log export LOG TMPLOG=/tmp/pginit.$$ export TMPLOG case "$1" in init) if [ ! -d $PGDBHOME ] ; then mkdir -p $PGDBHOME chmod a+rx $PGDBHOME chmod u+w $PGDBHOME fi chown $PGUSER.$PGGROUP $PGDBHOME rm -f $TMPLOG touch $TMPLOG chown $PGUSER.$PGGROUP $TMPLOG chmod a+r $TMPLOG echo "$0: initializing" >> $TMPLOG date >> $TMPLOG su $PGUSER 'sh -c "$PGSQLDIR/initdb -D $PGDBHOME >> $TMPLOG 2>&1"' mv $TMPLOG $LOG exit $? ;; start) echo -n "Starting relational database server: postgresql ($VERSION)" touch $LOG chown $PGUSER.$PGGROUP $LOG chmod a+r $LOG echo "$0: starting up" >> $LOG date >> $LOG rm -f $PGTMPFILE su $PGUSER 'sh -c "$PGSQLDIR/pg_ctl -D $PGDBHOME -o -i start >> $LOG 2>&1 &"' ;; local) echo -n "Starting relational database server (local mode): postgresql ($VERSION)" touch $LOG chown $PGUSER.$PGGROUP $LOG chmod a+r $LOG echo "$0: starting up local" >> $LOG date >> $LOG rm -f $PGTMPFILE su $PGUSER 'sh -c "$PGSQLDIR/pg_ctl -D $PGDBHOME start >> $LOG 2>&1 &"' ;; stop) echo -n "Stopping relational database server: postgresql ($VERSION)" touch $LOG chown $PGUSER.$PGGROUP $LOG chmod a+r $LOG echo "$0: shutting down" >> $LOG date >> $LOG su $PGUSER 'sh -c "$PGSQLDIR/pg_ctl -D $PGDBHOME stop >> $LOG 2>&1 &"' ;; restart) echo -n "Restarting relational database server: postgresql ($VERSION)" touch $LOG chown $PGUSER.$PGGROUP $LOG chmod a+r $LOG echo "$0: restarting" >> $LOG date >> $LOG su $PGUSER 'sh -c "$PGSQLDIR/pg_ctl -D $PGDBHOME -o -i restart >> $LOG 2>&1 &"' ;; reload|force-reload) echo -n "Reloading postgresql configuration" touch $LOG chown $PGUSER.$PGGROUP $LOG chmod a+r $LOG echo "$0: reloading" >> $LOG date >> $LOG su $PGUSER 'sh -c "$PGSQLDIR/pg_ctl -D $PGDBHOME -o -i reload >> $LOG 2>&1 &"' ;; dump) touch $LOG chown $PGUSER.$PGGROUP $LOG chmod a+r $LOG echo "$0: dumping database" >> $LOG date >> $LOG $SCRIPTDIR/postgresql-backup exit $? ;; status) $PGSQLDIR/pg_ctl -D $PGDBHOME status exit $? ;; *) echo "usage: $0 {start|stop|restart|reload|force-reload|status|init|dump}" exit 1 ;; esac if [ $? == 0 ]; then echo "." exit 0 else echo " failed" exit 1 fi