#!/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 # modified from other startup files in the # RedHat Linux distribution # # Clark Evans # 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} >> ${PGLOGFILE} 2>&1 &" > /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