mirror of
				https://github.com/postgres/postgres.git
				synced 2025-10-29 22:49:41 +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"
 |