2002-12-10 05:26:09 +08:00
|
|
|
#!/bin/sh
|
|
|
|
|
|
|
|
##
|
2004-03-09 09:59:13 +08:00
|
|
|
# PostgreSQL RDBMS Server
|
2002-12-10 05:26:09 +08:00
|
|
|
##
|
|
|
|
|
|
|
|
# PostgreSQL boot time startup script for Darwin/Mac OS X. To install, change
|
|
|
|
# the "prefix", "PGDATA", "PGUSER", and "PGLOG" variables below as
|
|
|
|
# necessary. Next, create a new directory, "/Library/StartupItems/PostgreSQL".
|
|
|
|
# Then copy this script and the accompanying "StartupParameters.plist" file
|
|
|
|
# into that directory. The name of this script file *must* be the same as the
|
|
|
|
# directory it is in. So you'll end up with these two files:
|
|
|
|
#
|
|
|
|
# /Library/StartupItems/PostgreSQL/PostgreSQL
|
2004-03-09 09:59:13 +08:00
|
|
|
# /Library/StartupItems/PostgreSQL/StartupParameters.plist
|
2002-12-10 05:26:09 +08:00
|
|
|
#
|
|
|
|
# Next, add this line to the /etc/hostconfig file:
|
|
|
|
#
|
2007-05-31 02:10:38 +08:00
|
|
|
# POSTGRESQL=-YES-
|
2002-12-10 05:26:09 +08:00
|
|
|
#
|
2003-11-12 11:27:26 +08:00
|
|
|
# The startup bundle will now be ready to go. To prevent this script from
|
2002-12-10 05:26:09 +08:00
|
|
|
# starting PostgreSQL at system startup, simply change that line in
|
2003-11-12 11:27:26 +08:00
|
|
|
# /etc/hostconfig back to:
|
2002-12-10 05:26:09 +08:00
|
|
|
#
|
2007-05-31 02:10:38 +08:00
|
|
|
# POSTGRESQL=-NO-
|
2002-12-10 05:26:09 +08:00
|
|
|
#
|
|
|
|
# For more information on Darwin/Mac OS X startup bundles, see this article:
|
|
|
|
#
|
|
|
|
# http://www.opensource.apple.com/projects/documentation/howto/html/SystemStarter_HOWTO.html
|
|
|
|
#
|
|
|
|
# Created by David Wheeler, 2002.
|
|
|
|
|
2010-11-24 04:27:50 +08:00
|
|
|
# modified by Ray Aspeitia 12-03-2003 :
|
2004-03-09 09:59:13 +08:00
|
|
|
# added log rotation script to db startup
|
2010-11-24 04:27:50 +08:00
|
|
|
# modified StartupParameters.plist "Provides" parameter to make it easier to
|
2004-03-09 09:59:13 +08:00
|
|
|
# start and stop with the SystemStarter utitlity
|
|
|
|
|
|
|
|
# use the below command in order to correctly start/stop/restart PG with log rotation script:
|
|
|
|
# SystemStarter [start|stop|restart] PostgreSQL
|
|
|
|
|
2002-12-10 05:26:09 +08:00
|
|
|
################################################################################
|
|
|
|
## EDIT FROM HERE
|
|
|
|
################################################################################
|
|
|
|
|
|
|
|
# Installation prefix
|
2004-03-09 09:59:13 +08:00
|
|
|
prefix="/usr/local/pgsql"
|
2002-12-10 05:26:09 +08:00
|
|
|
|
|
|
|
# Data directory
|
|
|
|
PGDATA="/usr/local/pgsql/data"
|
|
|
|
|
2004-10-02 02:30:25 +08:00
|
|
|
# Who to run the postmaster as, usually "postgres". (NOT "root")
|
2004-03-09 09:59:13 +08:00
|
|
|
PGUSER="postgres"
|
|
|
|
|
|
|
|
# the logfile path and name (NEEDS to be writeable by PGUSER)
|
|
|
|
PGLOG="${PGDATA}/logs/logfile"
|
|
|
|
|
|
|
|
# do you want to rotate the log files, 1=true 0=false
|
|
|
|
ROTATELOGS=1
|
|
|
|
|
|
|
|
# logfile rotate in seconds
|
|
|
|
ROTATESEC="604800"
|
2002-12-10 05:26:09 +08:00
|
|
|
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
## STOP EDITING HERE
|
|
|
|
################################################################################
|
|
|
|
|
|
|
|
# The path that is to be used for the script
|
2008-01-17 05:00:25 +08:00
|
|
|
PATH="$prefix/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
|
2002-12-10 05:26:09 +08:00
|
|
|
|
2009-08-28 00:59:38 +08:00
|
|
|
# What to use to start up the postmaster. (If you want the script to wait
|
|
|
|
# until the server has started, you could use "pg_ctl start -w" here.
|
|
|
|
# But without -w, pg_ctl adds no value.)
|
2004-10-02 02:30:25 +08:00
|
|
|
DAEMON="$prefix/bin/postmaster"
|
|
|
|
|
|
|
|
# What to use to shut down the postmaster
|
|
|
|
PGCTL="$prefix/bin/pg_ctl"
|
2002-12-10 05:26:09 +08:00
|
|
|
|
2004-03-09 09:59:13 +08:00
|
|
|
# The apache log rotation utility
|
|
|
|
LOGUTIL="/usr/sbin/rotatelogs"
|
|
|
|
|
2002-12-10 05:26:09 +08:00
|
|
|
. /etc/rc.common
|
|
|
|
|
|
|
|
StartService () {
|
2007-05-31 02:10:38 +08:00
|
|
|
if [ "${POSTGRESQL:=-NO-}" = "-YES-" ]; then
|
2004-03-09 09:59:13 +08:00
|
|
|
ConsoleMessage "Starting PostgreSQL database server"
|
|
|
|
if [ "${ROTATELOGS}" = "1" ]; then
|
2011-11-27 02:01:02 +08:00
|
|
|
sudo -u $PGUSER sh -c "${DAEMON} -D '${PGDATA}' &" 2>&1 | ${LOGUTIL} "${PGLOG}" ${ROTATESEC} &
|
2004-03-09 09:59:13 +08:00
|
|
|
else
|
2011-11-27 02:01:02 +08:00
|
|
|
sudo -u $PGUSER sh -c "${DAEMON} -D '${PGDATA}' &" >>"$PGLOG" 2>&1
|
2004-03-09 09:59:13 +08:00
|
|
|
fi
|
2002-12-10 05:26:09 +08:00
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
StopService () {
|
|
|
|
ConsoleMessage "Stopping PostgreSQL database server"
|
2011-11-27 02:01:02 +08:00
|
|
|
sudo -u $PGUSER sh -c "$PGCTL stop -D '${PGDATA}' -s -m fast"
|
2002-12-10 05:26:09 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
RestartService () {
|
2007-05-31 02:10:38 +08:00
|
|
|
if [ "${POSTGRESQL:=-NO-}" = "-YES-" ]; then
|
2002-12-10 05:26:09 +08:00
|
|
|
ConsoleMessage "Restarting PostgreSQL database server"
|
2004-10-02 02:30:25 +08:00
|
|
|
# should match StopService:
|
2011-11-27 02:01:02 +08:00
|
|
|
sudo -u $PGUSER sh -c "$PGCTL stop -D '${PGDATA}' -s -m fast"
|
2004-10-02 02:30:25 +08:00
|
|
|
# should match StartService:
|
2004-03-09 09:59:13 +08:00
|
|
|
if [ "${ROTATELOGS}" = "1" ]; then
|
2011-11-27 02:01:02 +08:00
|
|
|
sudo -u $PGUSER sh -c "${DAEMON} -D '${PGDATA}' &" 2>&1 | ${LOGUTIL} "${PGLOG}" ${ROTATESEC} &
|
2004-03-09 09:59:13 +08:00
|
|
|
else
|
2011-11-27 02:01:02 +08:00
|
|
|
sudo -u $PGUSER sh -c "${DAEMON} -D '${PGDATA}' &" >>"$PGLOG" 2>&1
|
2004-03-09 09:59:13 +08:00
|
|
|
fi
|
2002-12-10 05:26:09 +08:00
|
|
|
else
|
2004-03-09 09:59:13 +08:00
|
|
|
StopService
|
2002-12-10 05:26:09 +08:00
|
|
|
fi
|
|
|
|
}
|
|
|
|
|
|
|
|
RunService "$1"
|