mirror of
				https://github.com/postgres/postgres.git
				synced 2025-11-03 09:13:20 +03:00 
			
		
		
		
	Sidar Lopez, per bug #6310, with some additional improvements by me. Back-patch to 9.0, where the issue was introduced.
		
			
				
	
	
		
			117 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			117 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
#!/bin/sh
 | 
						|
 | 
						|
##
 | 
						|
# PostgreSQL RDBMS Server
 | 
						|
##
 | 
						|
 | 
						|
# 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
 | 
						|
#    /Library/StartupItems/PostgreSQL/StartupParameters.plist
 | 
						|
#
 | 
						|
# Next, add this line to the /etc/hostconfig file:
 | 
						|
#
 | 
						|
# POSTGRESQL=-YES-
 | 
						|
#
 | 
						|
# The startup bundle will now be ready to go. To prevent this script from
 | 
						|
# starting PostgreSQL at system startup, simply change that line in
 | 
						|
# /etc/hostconfig back to:
 | 
						|
#
 | 
						|
# POSTGRESQL=-NO-
 | 
						|
#
 | 
						|
# 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.
 | 
						|
 | 
						|
# modified by Ray Aspeitia 12-03-2003 :
 | 
						|
# added log rotation script to db startup
 | 
						|
# modified StartupParameters.plist "Provides" parameter to make it easier to
 | 
						|
# 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
 | 
						|
 | 
						|
################################################################################
 | 
						|
## EDIT FROM HERE
 | 
						|
################################################################################
 | 
						|
 | 
						|
# Installation prefix
 | 
						|
prefix="/usr/local/pgsql"
 | 
						|
 | 
						|
# Data directory
 | 
						|
PGDATA="/usr/local/pgsql/data"
 | 
						|
 | 
						|
# Who to run the postmaster as, usually "postgres".  (NOT "root")
 | 
						|
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"
 | 
						|
 | 
						|
 | 
						|
################################################################################
 | 
						|
## STOP EDITING HERE
 | 
						|
################################################################################
 | 
						|
 | 
						|
# The path that is to be used for the script
 | 
						|
PATH="$prefix/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
 | 
						|
 | 
						|
# 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.)
 | 
						|
DAEMON="$prefix/bin/postmaster"
 | 
						|
 | 
						|
# What to use to shut down the postmaster
 | 
						|
PGCTL="$prefix/bin/pg_ctl"
 | 
						|
 | 
						|
# The apache log rotation utility
 | 
						|
LOGUTIL="/usr/sbin/rotatelogs"
 | 
						|
 | 
						|
. /etc/rc.common
 | 
						|
 | 
						|
StartService () {
 | 
						|
    if [ "${POSTGRESQL:=-NO-}" = "-YES-" ]; then
 | 
						|
        ConsoleMessage "Starting PostgreSQL database server"
 | 
						|
        if [ "${ROTATELOGS}" = "1" ]; then
 | 
						|
            sudo -u $PGUSER sh -c "${DAEMON} -D '${PGDATA}' &" 2>&1 | ${LOGUTIL} "${PGLOG}" ${ROTATESEC} &
 | 
						|
        else
 | 
						|
            sudo -u $PGUSER sh -c "${DAEMON} -D '${PGDATA}' &" >>"$PGLOG" 2>&1
 | 
						|
        fi
 | 
						|
    fi
 | 
						|
}
 | 
						|
 | 
						|
StopService () {
 | 
						|
    ConsoleMessage "Stopping PostgreSQL database server"
 | 
						|
    sudo -u $PGUSER sh -c "$PGCTL stop -D '${PGDATA}' -s -m fast"
 | 
						|
}
 | 
						|
 | 
						|
RestartService () {
 | 
						|
    if [ "${POSTGRESQL:=-NO-}" = "-YES-" ]; then
 | 
						|
        ConsoleMessage "Restarting PostgreSQL database server"
 | 
						|
	# should match StopService:
 | 
						|
	sudo -u $PGUSER sh -c "$PGCTL stop -D '${PGDATA}' -s -m fast"
 | 
						|
	# should match StartService:
 | 
						|
        if [ "${ROTATELOGS}" = "1" ]; then
 | 
						|
            sudo -u $PGUSER sh -c "${DAEMON} -D '${PGDATA}' &" 2>&1 | ${LOGUTIL} "${PGLOG}" ${ROTATESEC} &
 | 
						|
        else
 | 
						|
            sudo -u $PGUSER sh -c "${DAEMON} -D '${PGDATA}' &" >>"$PGLOG" 2>&1
 | 
						|
        fi
 | 
						|
    else
 | 
						|
        StopService
 | 
						|
    fi
 | 
						|
}
 | 
						|
 | 
						|
RunService "$1"
 |