- #!/bin/sh
- #
- # postgres.init.sh - This script is used to start/stop
- # the postgreSQL listener process.
- #
- # Usage
- #
- # 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
- #
- PGOPTS="" # -B 256
- #
- # 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"
- #
- # Add the -D option if you want to ovverride the PGDATA
- # environment variable defined in
- #
- # PGOPTS="-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="-D/opt/pgsql_beta/data -p 5433"
- #
- # Source function library.
- . /etc/rc.d/init.d/functions
- # Get config.
- . /etc/sysconfig/network
- #
- # Check that networking is up.
- # Pretty much need it for postmaster.
- #
- if [ ${NETWORKING} = "no" ]
- then
- exit 0
- fi
- #[ -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 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
- ;;
- 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|install|uninstall}"
- exit 1
- esac
- exit 0