From bbac19a973f788b3e4d211aab943456b5dfac2dc Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <peter_e@gmx.net>
Date: Thu, 8 Feb 2001 19:53:33 +0000
Subject: [PATCH] Remove outdated contrib/linux start scripts.  Beat some sense
 into contrib/init.d start script.  Place into more aptly named directory. 
 Maybe we could add scripts for other platforms here later.

---
 contrib/README                  |  13 +--
 contrib/init.d/README           |   8 --
 contrib/init.d/postgresql       |  69 --------------
 contrib/linux/postgres.init.csh |  91 ------------------
 contrib/linux/postgres.init.sh  | 162 --------------------------------
 contrib/start-scripts/linux     |  90 ++++++++++++++++++
 6 files changed, 93 insertions(+), 340 deletions(-)
 delete mode 100644 contrib/init.d/README
 delete mode 100644 contrib/init.d/postgresql
 delete mode 100755 contrib/linux/postgres.init.csh
 delete mode 100755 contrib/linux/postgres.init.sh
 create mode 100644 contrib/start-scripts/linux

diff --git a/contrib/README b/contrib/README
index 395cf5cd61f..1c48989c4c6 100644
--- a/contrib/README
+++ b/contrib/README
@@ -47,11 +47,6 @@ fulltextindex -
 	Full text indexing using triggers
 	by Maarten Boekhold <maartenb@dutepp0.et.tudelft.nl>
 
-init.d - 
-	
-	Init.d-style scripts for starting and stopping the PostgreSQL
-	server by Ryan Kirkpatrick <pgsql@rkirkpat.net>
-	
 intarray -
 	Index support for arrays of int4, using GiST
 	by Teodor Sigaev <teodor@stack.net> and Oleg Bartunov
@@ -61,11 +56,6 @@ isbn_issn -
 	PostgreSQL type extensions for ISBN (books) and ISSN (serials)
 	by Garrett A. Wollman <wollman@khavrinen.lcs.mit.edu>
 
-linux -
-	Scripts for starting and stopping the PostgreSQL server on
-	a Linux system
-	by Thomas Lockhart <lockhart@alumni.caltech.edu>
-
 lo -
 	Large Object maintenance
 	by Peter Mount <peter@retep.org.uk> 
@@ -123,6 +113,9 @@ soundex -
 spi -
 	Various trigger functions, examples for using SPI.
 
+start-scripts - 
+	Scripts for starting the server at boot time.
+	
 string -
 	C-like input/output conversion routines for strings
 	by Massimo Dal Zotto <dz@cs.unitn.it>
diff --git a/contrib/init.d/README b/contrib/init.d/README
deleted file mode 100644
index a30cb788392..00000000000
--- a/contrib/init.d/README
+++ /dev/null
@@ -1,8 +0,0 @@
-	postgresql -> This is a Linux distribution independent (or so I
-hope) init.d/rc.d script that makes use of pg_ctl. There is currently a
-few in ./contrib/linux of the pgsql source tree, but they are RedHat
-specific. This one is simple and self contained. 
-
----------------------------------------------------------------------------
-|   Ryan Kirkpatrick  |  Boulder, Colorado  |  http://www.rkirkpat.net/   |
----------------------------------------------------------------------------
diff --git a/contrib/init.d/postgresql b/contrib/init.d/postgresql
deleted file mode 100644
index d408d691aeb..00000000000
--- a/contrib/init.d/postgresql
+++ /dev/null
@@ -1,69 +0,0 @@
-#! /bin/sh
-#
-# PostgreSQL	Start, stop, and get status on the PostgreSQL RDMBS.	
-#               This script is Linux distribution independent 
-#                 (or at least should be :).
-# 
-# By Ryan Kirkpatrick <pgsql@rkirkpat.net>.
-#
-# If you find any problems with this script, or have suggestions
-# please send them to me.
-
-# Arguements for pg_ctl and then for the postmaster. Change as needed.
-ARGS="-w -D /usr/local/pgsql/data"
-PM_ARGS="-i -F"
-
-# Changes should not be needed beyond this point.
-
-# 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 postmster, and a few names.
-DAEMON=/usr/local/pgsql/bin/pg_ctl
-NAME=postmaster
-FILE=postgresql
-DESC="PostgreSQL RDBMS"
-
-# Who to run pg_ctl as, should be postgres.
-USER="postgres:postgres"
-
-# Where to keep a log file.
-LOG="/usr/local/pgsql/server.log"
-
-# Only start if we can find pg_ctl.
-test -f $DAEMON || exit 0
-set -e
-
-# Parse command line parameters.
-case "$1" in
-  start)
-	# Start the postmaster using pg_ctl and given options.
-	echo -n "Starting $DESC: "
-	su - postgres sh -c "$DAEMON start $ARGS -o \"$PM_ARGS\" > $LOG 2>&1"
-	echo "$NAME."
-	;;
-  stop)
-	# Stop the postmaster using pg_ctl.
-	echo -n "Stopping $DESC: "
-	su - postgres sh -c "$DAEMON stop > /dev/null 2>&1" 
-	echo "$NAME."
-	;;
-  restart)
-	# Restart the postmaster by calling ourselves.
-	/etc/init.d/$FILE stop
-	sleep 5
-	/etc/init.d/$FILE start
-	;;
-  status)
-	# Print the status of the postmaster.
-	su - postgres $DAEMON status
-	;;
-  *)
-	# Print help.
-	N=/etc/init.d/$FILE
-	echo "Usage: $N {start|stop|restart|status}" >&2
-	exit 1
-	;;
-esac
-
-exit 0
diff --git a/contrib/linux/postgres.init.csh b/contrib/linux/postgres.init.csh
deleted file mode 100755
index 298cc93f20b..00000000000
--- a/contrib/linux/postgres.init.csh
+++ /dev/null
@@ -1,91 +0,0 @@
-#!/bin/sh
-#
-# postgres.init Start postgres back end system.
-#
-# Author:       Thomas Lockhart <lockhart@alumni.caltech.edu>
-#               modified from other startup files in the RedHat Linux distribution
-#
-# 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" and FACILITY to "local5" below
-#
-#PGBIN="/opt/postgres/current/bin"	# not used any more - thomas 1997-12-14
-PGACCOUNT="postgres"		# the postgres account (you called it something else?)
-POSTMASTER="postmaster"		# this probably won't change
-
-USE_SOCKET="yes"		# "no" to enable tcp/ip(remote) access
-PGSOCKETFILE="/tmp/.s.PGSQL.5432"
-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 1024 -S -o '-Fe'
-if [ ${USE_SOCKET} = "no" ]
-then
-	PGOPTS="-i ${PGOPTS}"	# -i to enable TCP/IP rather than Unix socket
-fi
-
-# 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
-
-# Don't bother checking for file existance to avoid hardcoding any paths - thomas 1997-12-14
-#[ -f ${PGBIN}/${POSTMASTER} ] || exit 0
-
-# See how we were called.
-case "$1" in
-  start)
-# force a stop to kill a running postmaster and to clean up sockets
-# necessary if system crashed (a power outage provoked this feature)
-	eval $0 stop
-# save the old log file, if any
-	if [ -f ${PGLOGFILE} ]
-	then
-		mv ${PGLOGFILE} ${PGLOGFILE}.old
-	fi
-
-	echo -n "Starting postgres: "
-
-# force full login to get path names
-# my postgres runs tcsh so use proper syntax in redirection...
-	if [ ${USE_SYSLOG} = "yes" ]; then
-		su - ${PGACCOUNT} -c "(${POSTMASTER} ${PGOPTS} |& logger -p ${FACILITY}.notice) &" > /dev/null&
-	else
-		su - ${PGACCOUNT} -c "${POSTMASTER} ${PGOPTS} >>&! ${PGLOGFILE} &" > /dev/null&
-	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
-	if [ ${USE_SOCKET} = "yes" ] && [ -S ${PGSOCKETFILE} ]; then
-		echo -n " (remove socket ${PGSOCKETFILE})"
-		rm -f ${PGSOCKETFILE}
-	fi
-	echo
-	;;
-  *)
-	echo "Usage: $0 {start|stop}"
-	exit 1
-esac
-
-exit 0
diff --git a/contrib/linux/postgres.init.sh b/contrib/linux/postgres.init.sh
deleted file mode 100755
index 556671d4878..00000000000
--- a/contrib/linux/postgres.init.sh
+++ /dev/null
@@ -1,162 +0,0 @@
-#!/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} >> ${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
diff --git a/contrib/start-scripts/linux b/contrib/start-scripts/linux
new file mode 100644
index 00000000000..9b0d0737f36
--- /dev/null
+++ b/contrib/start-scripts/linux
@@ -0,0 +1,90 @@
+#! /bin/sh
+
+# This is an example of a start/stop script for SysV-style init, such
+# as is used on Linux systems.  You should edit some of the variables
+# and maybe the 'echo' commands.
+#
+# Place this file at /etc/init.d/postgresql (or
+# /etc/rc.d/init.d/postgresql) and make symlinks to
+#   /etc/rc.d/rc0.d/K02postgresql
+#   /etc/rc.d/rc1.d/K02postgresql
+#   /etc/rc.d/rc2.d/K02postgresql
+#   /etc/rc.d/rc3.d/S98postgresql
+#   /etc/rc.d/rc4.d/S98postgresql
+#   /etc/rc.d/rc5.d/S98postgresql
+# Or check out the chkconfig program, if you have it.
+#
+# Proper init scripts on Linux systems normally require setting lock
+# and pid files under /var/run as well as reacting to network
+# settings, so you should treat this with care.
+
+# Original author:  Ryan Kirkpatrick <pgsql@rkirkpat.net>
+
+# $Header: /cvsroot/pgsql/contrib/start-scripts/linux,v 1.1 2001/02/08 19:53:33 petere Exp $
+
+## EDIT FROM HERE
+
+# Installation prefix
+prefix=/usr/local/pgsql
+
+# Data directory
+PGDATA="/usr/local/pgsql/data"
+
+# Who to run pg_ctl as, should be "postgres".
+PGUSER=postgres
+
+# Where to keep a log file
+PGLOG="$PGDATA/serverlog"
+
+## STOP EDITING HERE
+
+export PGDATA
+
+# Check for echo -n vs echo \c
+if echo '\c' | grep -s c >/dev/null 2>&1 ; then
+    ECHO_N="echo -n"
+    ECHO_C=""
+else
+    ECHO_N="echo"
+    ECHO_C='\c'
+fi
+
+# 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"
+
+set -e
+
+# Only start if we can find pg_ctl.
+test -f $DAEMON || exit 0
+
+# Parse command line parameters.
+case $1 in
+  start)
+	$ECHO_N "Starting PostgreSQL: "$ECHO_C
+	su - $PGUSER -c "$DAEMON start -s -l $PGLOG" 
+	echo "ok"
+	;;
+  stop)
+	echo -n "Stopping PostgreSQL: "
+	su - $PGUSER -c "$DAEMON stop -s -m fast"
+	echo "ok"
+	;;
+  restart)
+	echo -n "Restarting PostgreSQL: "
+	su - $PGUSER -c "$DAEMON restart -s -m fast"
+	echo "ok"
+	;;
+  status)
+	su - $PGUSER -c "$DAEMON status"
+	;;
+  *)
+	# Print help
+	echo "Usage: $0 {start|stop|restart|status}" 1>&2
+	exit 1
+	;;
+esac
+
+exit 0
-- 
GitLab