OSDN Git Service

This patch is to add more comments
authorBruce Momjian <bruce@momjian.us>
Mon, 10 May 1999 04:57:07 +0000 (04:57 +0000)
committerBruce Momjian <bruce@momjian.us>
Mon, 10 May 1999 04:57:07 +0000 (04:57 +0000)
to postgres.init.sh , clairify the options
available, and to add easy support
for installation of postgres into the
runlevel system.

"sh postgres.init.sh install"

Will now install "postgres" in the
/etc/rc.d/init.d directory and execute
/sbin/chkconfig to hook up the symbolic
links.  An uninstall option is also added.

Enclosed is the patch and the patched file

Clark

contrib/linux/postgres.init.sh

index ebe9d70..abeafd3 100755 (executable)
@@ -1,25 +1,93 @@
 #!/bin/sh
 #
-# postgres.init Start postgres back end system.
+# postgres.init.sh - This script is used to start/stop 
+#                    the postgreSQL listener process.
 #
-# Author:       Thomas Lockhart <lockhart@alumni.caltech.edu>
-#               modified from other startup files in the RedHat Linux distribution
+# Usage
 #
-# This version can log backend output through syslog using the local5 facility.
-# To enable this, edit /etc/syslog.conf to include a line similar to:
-#   local5.*  /var/log/postgres
-# and then set USE_SYSLOG to "yes" below
+#   You can use this script manually, and/or you
+#   can install this script into the runlevel system
+#   by running "sh postgres.init.sh install"
+#
+# Credits
+#
+#   Thomas Lockhart <lockhart@alumni.caltech.edu>
+#   modified from other startup files in the
+#   RedHat Linux distribution
+#
+#   Clark Evans <cce@clarkevans.com>
+#   cleaned up, added comments, etc.
+# 
+# RedHat Stuff
+#
+#    chkconfig: 345 85 15
+#    description: Starts and stops the PostgreSQL backend daemon\
+#                 that handles all database requests.
+#    processname: postmaster
+#    pidfile:     /var/run/postmaster.pid
+# 
+#
+# Note
+#
+#    This version can log backend output through syslog using
+#    the local5 facility. To enable this, set USE_SYSLOG to "yes"
+#    below and then edit /etc/syslog.conf to include a line
+#    similar to:
+#
+#       local5.*  /var/log/postgres
+#
+# Config Variables
+#
+PGACCOUNT="postgres"      
+#
+#  The non-root user account which will be used to run the
+#  PostgreSQL executeable.   For this script to work, the
+#  shell for this account must be SH/BASH.
+#
+#  The following lines should be in this account's .bash_profile
+#
+#  PATH=$PATH:$HOME/bin
+#  MANPATH=$MANPATH:/opt/pgsql/man
+#  PGLIB=/opt/pgsql/lib
+#  PGDATA=/opt/pgsql/data
+#
+POSTMASTER="postmaster"     
+#
+#  The executable program which is to be run, in this case
+#  it is the listener, which waits for requests on the port
+#  specified during configuration.
+# 
+USE_SYSLOG="yes"        
+#
+# "yes" to enable syslog, "no" to go to /tmp/postgres.log
+#
+FACILITY="local5"       
+#
+# can assign local0-local7 as the facility for logging
+#
+PGLOGFILE="/tmp/postgres.log"   
+#
+# only used if syslog is disabled
 #
-#PGBIN="/opt/postgres/current/bin"     # not used
-PGACCOUNT="postgres"           # the postgres account (you called it something else?)
-POSTMASTER="postmaster"                # this probably won't change
-
-USE_SYSLOG="yes"               # "yes" to enable syslog, "no" to go to /tmp/postgres.log
-FACILITY="local5"              # can assign local0-local7 as the facility for logging
-PGLOGFILE="/tmp/postgres.log"  # only used if syslog is disabled
-
 PGOPTS="-B 256"
-#PGOPTS="-i -B 256"    # -i to enable TCP/IP rather than Unix socket
+#
+# The B option sets the number of shared buffers
+#
+# Add the "-i" option to enable TCP/IP sockets in addition
+# to unix domain sockets.  This is needed for Java's JDBC
+#
+# PGOPTS="-i -B 256"
+#
+# Add the -D option if you want to ovverride the PGDATA 
+# environment variable defined in
+#
+# PGOPTS="-B 256 -D/opt/pgsql/data
+#
+# Add the -p option if you would like the listener to
+# attach to a port other than the one configured (5432?)
+#
+# PGOPTS="-B 256 -D/opt/pgsql_beta/data -p 5433"
+#
 
 # Source function library.
 . /etc/rc.d/init.d/functions
@@ -27,49 +95,68 @@ PGOPTS="-B 256"
 # Get config.
 . /etc/sysconfig/network
 
+#
 # Check that networking is up.
 # Pretty much need it for postmaster.
+#
 if [ ${NETWORKING} = "no" ]
 then
-       exit 0
+    exit 0
 fi
 
-#[ -f ${PGBIN}/${POSTMASTER} ] || exit 0
+#[ -f /opt/pgsq//bin/postmaster ] || exit 0
 
+#
 # See how we were called.
+#
 case "$1" in
   start)
-       if [ -f ${PGLOGFILE} ]
-       then
-               mv ${PGLOGFILE} ${PGLOGFILE}.old
-       fi
-       echo -n "Starting postgres: "
-# force full login to get path names
-# my postgres runs SH/BASH so use proper syntax in redirection...
-       if [ ${USE_SYSLOG} = "yes" ]; then
-               su - ${PGACCOUNT} -c "(${POSTMASTER} ${PGOPTS} 2>&1 | logger -p ${FACILITY}.notice) &" > /dev/null 2>&1 &
-       else
-               su - ${PGACCOUNT} -c "${POSTMASTER} ${PGOPTS} 2>>&1 ${PGLOGFILE} &" > /dev/null 2>&1 &
-       fi
-       sleep 5
-       pid=`pidof ${POSTMASTER}`
-       echo -n "${POSTMASTER} [$pid]"
-#      touch /var/lock/subsys/${POSTMASTER}
-       echo
-       ;;
+    if [ -f ${PGLOGFILE} ]
+    then
+        mv ${PGLOGFILE} ${PGLOGFILE}.old
+    fi
+    echo -n "Starting postgres: "
+#
+# force full login to get PGDATA and PGLIB path names
+# Since the login script for ${PGACCOUNT} is SH/BASH compliant, 
+# we use proper redirection syntax...
+#
+    if [ ${USE_SYSLOG} = "yes" ]; then
+        su - ${PGACCOUNT} -c "(${POSTMASTER} ${PGOPTS} 2>&1 | logger -p ${FACILITY}.notice) &" > /dev/null 2>&1 &
+    else
+        su - ${PGACCOUNT} -c "${POSTMASTER} ${PGOPTS} 2>>&1 ${PGLOGFILE} &" > /dev/null 2>&1 &
+    fi
+    sleep 5
+    pid=`pidof ${POSTMASTER}`
+    echo -n "${POSTMASTER} [$pid]"
+#   touch /var/lock/subsys/${POSTMASTER}
+    echo
+    ;;
   stop)
-       echo -n "Stopping postgres: "
-       pid=`pidof ${POSTMASTER}`
-       if [ "$pid" != "" ] ; then
-               echo -n "${POSTMASTER} [$pid]"
-               kill -TERM $pid
-               sleep 1
-       fi
-       echo
-       ;;
+    echo -n "Stopping postgres: "
+    pid=`pidof ${POSTMASTER}`
+    if [ "$pid" != "" ] ; then
+        echo -n "${POSTMASTER} [$pid]"
+        kill -TERM $pid
+        sleep 1
+    fi
+    echo
+    ;;
+  install)
+    echo "Adding postgres to runlevel system."
+    cp $0 /etc/rc.d/init.d/postgres
+    /sbin/chkconfig --add postgres
+    echo
+    ;;
+  uninstall)
+    echo "Deleting postgres from runlevel system."
+    /sbin/chkconfig --del postgres
+    rm /etc/rc.d/init.d/postgres
+    echo
+    ;;
   *)
-       echo "Usage: $0 {start|stop}"
-       exit 1
+    echo "Usage: $0 {start|stop|install|uninstall}"
+    exit 1
 esac
 
 exit 0