]> granicus.if.org Git - postgresql/commitdiff
I wanted to submit some changes to the bundled postgres startup
authorBruce Momjian <bruce@momjian.us>
Tue, 9 Mar 2004 01:59:13 +0000 (01:59 +0000)
committerBruce Momjian <bruce@momjian.us>
Tue, 9 Mar 2004 01:59:13 +0000 (01:59 +0000)
script for Mac OS X. I added calls to utilize the bundled apache
rotatelogs script in the DB startup for log rotation. Also modified
startup parameters file to allow using the "SystemStarter" utility to
start/stop/restart postgres with a rotating log file.

The script credits David Wheeler, 2002. I wrote him a message about
the changes an he suggested I post them here. I explain some of the
changes below.

Not sure how to submit the changes. I have 3 files, "PostgreSQL"
script, "StartupParameters.plist" file, "pg_startupscript.diff" file.
The diff file was run against the original "PostgreSQL" script file.
I'll try attaching them to this message. If they get filtered I can
resend if needed.

Thanks.

Ray A.

------------------------------------

1) Changed the "Provides" parameter in StartupParameters.plist to
"PostgreSQL" from "postgres database" simply for ease of typing. It
seems that the SystemStarter utility uses the "Provides" value if you
want to control the script. This way I did not have to enclose it in
quotes on commandline. The modified StartupParameters.plist is now an
XML document also.

2) For the startup script I added 2 user modifiable variables:

# do you want to rotate the log files, 1=true 0=false
ROTATELOGS=1

# logfile rotate in seconds
ROTATESEC="604800"

I also added a non modifiable variable:

# The apache log rotation utility
LOGUTIL="/usr/sbin/rotatelogs"

I modified the StartService and RestartService functions to execute
the new commands if the user wants log rotation.

Ray Aspeitia

contrib/start-scripts/PostgreSQL.darwin
contrib/start-scripts/StartupParameters.plist.darwin

index b27f672003492cacdb6f3f9c3a51fb4041a107ff..e953a3091b99f7f3c7b3a93e2e5e24c94c9059c7 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 ##
-# PotgreSQL RDBMS Server
+# PostgreSQL RDBMS Server
 ##
 
 # PostgreSQL boot time startup script for Darwin/Mac OS X. To install, change
@@ -12,7 +12,7 @@
 # directory it is in. So you'll end up with these two files:
 #
 #    /Library/StartupItems/PostgreSQL/PostgreSQL
-#    /Library/StartupItems/PostgreSQLStartupParameters.plist
+#    /Library/StartupItems/PostgreSQL/StartupParameters.plist
 #
 # Next, add this line to the /etc/hostconfig file:
 #
 #
 # 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
+prefix="/usr/local/pgsql"
 
 # Data directory
 PGDATA="/usr/local/pgsql/data"
 
 # Who to run pg_ctl as, should be "postgres".
-PGUSER=postgres
+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"
 
-# Where to keep a log file
-PGLOG="$PGDATA/serverlog"
 
 ################################################################################
 ## STOP EDITING HERE
@@ -56,12 +71,19 @@ 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"
 
+# The apache log rotation utility
+LOGUTIL="/usr/sbin/rotatelogs"
+
 . /etc/rc.common
 
 StartService () {
     if [ "${POSTGRESQLSERVER:=-NO-}" = "-YES-" ]; then
-       ConsoleMessage "Starting PostgreSQL database server"
-       sudo -u $PGUSER $DAEMON start -D "$PGDATA" -s -l $PGLOG
+        ConsoleMessage "Starting PostgreSQL database server"
+        if [ "${ROTATELOGS}" = "1" ]; then
+            sudo -u $PGUSER sh -c "${DAEMON} start -D ${PGDATA} -s | ${LOGUTIL} ${PGLOG} ${ROTATESEC} &"
+        else
+            sudo -u $PGUSER $DAEMON start -D "$PGDATA" -s -l $PGLOG
+        fi
     fi
 }
 
@@ -73,9 +95,15 @@ StopService () {
 RestartService () {
     if [ "${POSTGRESQLSERVER:=-NO-}" = "-YES-" ]; then
         ConsoleMessage "Restarting PostgreSQL database server"
-       sudo -u $PGUSER $DAEMON restart -D "$PGDATA" -s -m fast
+        if [ "${ROTATELOGS}" = "1" ]; then
+#            StopService
+#            StartService
+            sudo -u $PGUSER sh -c "${DAEMON} restart -D ${PGDATA} -s -m fast | ${LOGUTIL} ${PGLOG} ${ROTATESEC} &"
+        else
+            sudo -u $PGUSER $DAEMON restart -D "$PGDATA" -s -m fast
+        fi
     else
-       StopService
+        StopService
     fi
 }
 
index 0a2f3ba43887a4974a29d0f7969e978d08f6d9ce..6c788d0dda77ff74aead742d9b2cfc928cd09d5f 100644 (file)
@@ -1,13 +1,33 @@
-{
-  Description     = "PostgreSQL Database Server";
-  Provides        = ("postgres database");
-  Requires        = ("Disks", "Resolver");
-  Uses            = ("NFS", "Network Time");
-  OrderPreference = "None";
-  Messages =
-  {
-    start = "Starting PostgreSQL database server";
-    stop  = "Stopping PostgreSQL database server";
-    restart = "Restarting PostgreSQL database server";
-  };
-}
+<?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>