Auto Starting +/or Shutdown on OS X - Mailing list pgsql-general
From | Ralph Smith |
---|---|
Subject | Auto Starting +/or Shutdown on OS X |
Date | |
Msg-id | 46AE54A4.4040100@u.washington.edu Whole thread Raw |
Responses |
Re: Auto Starting +/or Shutdown on OS X
|
List | pgsql-general |
I'm using scripts in /Library/StartupItems/PostgreSQL PostgreSQL starts manually just fine via /usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data -l /usr/local/pgsql/logfile start PostgreSQL will not start on System restart using files in /Library/StartupItems/PostgreSQL (See below). If I execute the start command above just after a System start I get pg_ctl: another server may be running; trying to start server anyway server starting and then it starts and runs fine. If I shut down PG using pg_ctl stop (no users connected) it stops and subsequently starts using code above just fine, w/o the warning. --- I added the command: date > /Users/showmefile to appropriate portions of /Library/StartupItems/PostgreSQL/PostgreSQL as seen below, and the script portions ARE appropriately being executed. How come shutdown isn't clearing things up? Or is the problem in the startup? Thanks! smithrn (at) u (dot) washington (dot) edu -------------------------------------------- PostgreSQL -------------------------------------------- #!/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: # # POSTGRESQLSERVER=-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: # # POSTGRESQLSERVER=-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=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin # What to use to start up the postmaster (we do NOT use pg_ctl for this, # as it adds no value and can cause the postmaster to misrecognize a stale # lock file) 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 [ "${POSTGRESQLSERVER:=-NO-}" = "-YES-" ]; then ConsoleMessage "Starting PostgreSQL database server" if [ "${ROTATELOGS}" = "1" ]; then # sudo -u $PGUSER sh -c "${DAEMON} -D '${PGDATA}' | ${LOGUTIL} '${PGLOG}' ${ROTATESEC} &" 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 date > /Users/PG_Started } StopService () { ConsoleMessage "Stopping PostgreSQL database server" sudo -u $PGUSER $PGCTL stop -D "$PGDATA" -s -m fast date > /Users/PG_Stopped } RestartService () { if [ "${POSTGRESQLSERVER:=-NO-}" = "-YES-" ]; then ConsoleMessage "Restarting PostgreSQL database server" # should match StopService: sudo -u $PGUSER $PGCTL stop -D "$PGDATA" -s -m fast # should match StartService: if [ "${ROTATELOGS}" = "1" ]; then # sudo -u $PGUSER sh -c "${DAEMON} -D '${PGDATA}' | ${LOGUTIL} '${PGLOG}' ${ROTATESEC} &" 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 date > /Users/PG_Restarted } RunService "$1" -------------------------------------------- StartupParameters.plist -------------------------------------------- <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Description</key> <string>PostgreSQL Database Server</string> <key>Messages</key> <dict> <key>start</key> <string>Starting PostgreSQL database server</string> <key>stop</key> <string>Stopping PostgreSQL database server</string> <key>restart</key> <string>Restarting PostgreSQL database server</string> </dict> <key>OrderPreference</key> <string>Late</string> <key>Provides</key> <array> <string>PostgreSQL</string> </array> <key>Requires</key> <array> <string>Disks</string> <string>Resolver</string> </array> <key>Uses</key> <array> <string>NFS</string> <string>NetworkTime</string> </array> </dict> </plist> --------------------------------------------
pgsql-general by date: