]> granicus.if.org Git - postgresql/blobdiff - contrib/start-scripts/PostgreSQL.darwin
Adjust postmaster to recognize that a lockfile containing its parent's PID
[postgresql] / contrib / start-scripts / PostgreSQL.darwin
index e953a3091b99f7f3c7b3a93e2e5e24c94c9059c7..3e4b86a7f3b3f65e8eb353f9ae29ac70a9f749b4 100755 (executable)
@@ -48,7 +48,7 @@ prefix="/usr/local/pgsql"
 # Data directory
 PGDATA="/usr/local/pgsql/data"
 
-# Who to run pg_ctl as, should be "postgres".
+# Who to run the postmaster as, usually "postgres".  (NOT "root")
 PGUSER="postgres"
 
 # the logfile path and name (NEEDS to be writeable by PGUSER)
@@ -68,8 +68,13 @@ ROTATESEC="604800"
 # 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
-DAEMON="$prefix/bin/pg_ctl"
+# 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"
@@ -80,27 +85,28 @@ StartService () {
     if [ "${POSTGRESQLSERVER:=-NO-}" = "-YES-" ]; then
         ConsoleMessage "Starting PostgreSQL database server"
         if [ "${ROTATELOGS}" = "1" ]; then
-            sudo -u $PGUSER sh -c "${DAEMON} start -D ${PGDATA} -s | ${LOGUTIL} ${PGLOG} ${ROTATESEC} &"
+            sudo -u $PGUSER sh -c "${DAEMON} -D '${PGDATA}' | ${LOGUTIL} '${PGLOG}' ${ROTATESEC} &"
         else
-            sudo -u $PGUSER $DAEMON start -D "$PGDATA" -s -l $PGLOG
+            sudo -u $PGUSER sh -c "${DAEMON} -D '${PGDATA}' &" >>$PGLOG 2>&1
         fi
     fi
 }
 
 StopService () {
     ConsoleMessage "Stopping PostgreSQL database server"
-    sudo -u $PGUSER $DAEMON stop -D "$PGDATA" -s -m fast
+    sudo -u $PGUSER $PGCTL stop -D "$PGDATA" -s -m fast
 }
 
 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
-#            StopService
-#            StartService
-            sudo -u $PGUSER sh -c "${DAEMON} restart -D ${PGDATA} -s -m fast | ${LOGUTIL} ${PGLOG} ${ROTATESEC} &"
+            sudo -u $PGUSER sh -c "${DAEMON} -D '${PGDATA}' | ${LOGUTIL} '${PGLOG}' ${ROTATESEC} &"
         else
-            sudo -u $PGUSER $DAEMON restart -D "$PGDATA" -s -m fast
+            sudo -u $PGUSER sh -c "${DAEMON} -D '${PGDATA}' &" >>$PGLOG 2>&1
         fi
     else
         StopService