diff options
Diffstat (limited to 'src/bin/pg_ctl/pg_ctl.sh')
-rwxr-xr-x | src/bin/pg_ctl/pg_ctl.sh | 412 |
1 files changed, 0 insertions, 412 deletions
diff --git a/src/bin/pg_ctl/pg_ctl.sh b/src/bin/pg_ctl/pg_ctl.sh deleted file mode 100755 index e7a8f8f297c..00000000000 --- a/src/bin/pg_ctl/pg_ctl.sh +++ /dev/null @@ -1,412 +0,0 @@ -#! /bin/sh -#------------------------------------------------------------------------- -# -# pg_ctl.sh-- -# Start/Stop/Restart/HUP/Report status of postmaster -# -# Copyright (c) 2001-2003, PostgreSQL Global Development Group -# -# -# IDENTIFICATION -# $PostgreSQL: pgsql/src/bin/pg_ctl/pg_ctl.sh,v 1.38 2004/01/10 02:55:14 momjian Exp $ -# -#------------------------------------------------------------------------- - -CMDNAME=`basename $0` - -help="\ -$CMDNAME is a utility to start, stop, restart, reload configuration files, -or report the status of a PostgreSQL server. - -Usage: - $CMDNAME start [-w] [-D DATADIR] [-s] [-l FILENAME] [-o \"OPTIONS\"] - $CMDNAME stop [-W] [-D DATADIR] [-s] [-m SHUTDOWN-MODE] - $CMDNAME restart [-w] [-D DATADIR] [-s] [-m SHUTDOWN-MODE] [-o \"OPTIONS\"] - $CMDNAME reload [-D DATADIR] [-s] - $CMDNAME status [-D DATADIR] - -Common options: - -D DATADIR location of the database storage area - -s only print errors, no informational messages - -w wait until operation completes - -W do not wait until operation completes - --help show this help, then exit - --version output version information, then exit -(The default is to wait for shutdown, but not for start or restart.) - -If the -D option is omitted, the environment variable PGDATA is used. - -Options for start or restart: - -l FILENAME write (or append) server log to FILENAME. The - use of this option is highly recommended. - -o OPTIONS command line options to pass to the postmaster - (PostgreSQL server executable) - -p PATH-TO-POSTMASTER normally not necessary - -Options for stop or restart: - -m SHUTDOWN-MODE may be 'smart', 'fast', or 'immediate' - -Shutdown modes are: - smart quit after all clients have disconnected - fast quit directly, with proper shutdown - immediate quit without complete shutdown; will lead to recovery on restart - -Report bugs to <pgsql-bugs@postgresql.org>." - -advice="\ -Try \"$CMDNAME --help\" for more information." - - -# Placed here during build -bindir='@bindir@' -VERSION='@VERSION@' -DEF_PGPORT='@DEF_PGPORT@' - -# protect the log file -umask 077 - -# 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 - -# -# Find out where we're located -# -if echo "$0" | grep '/' > /dev/null 2>&1 -then - # explicit dir name given - self_path=`echo "$0" | sed 's,/[^/]*$,,'` # (dirname command is not portable) -else - # look for it in PATH ('which' command is not portable) - for dir in `echo "$PATH" | sed 's/:/ /g'` - do - # empty entry in path means current dir - [ -z "$dir" ] && dir='.' - if [ -f "$dir/$CMDNAME" ] - then - self_path="$dir" - break - fi - done -fi - -# Check if needed programs actually exist in path -if [ -x "$self_path/postmaster" ] && [ -x "$self_path/psql" ]; then - PGPATH="$self_path" -elif [ -x "$bindir/postmaster" ] && [ -x "$bindir/psql" ]; then - PGPATH="$bindir" -else - echo "The programs \"postmaster\" and \"psql\" are needed by $CMDNAME but" 1>&2 - echo "were not found in the directory \"$bindir\"." 1>&2 - echo "Check your installation." 1>&2 - exit 1 -fi - -po_path="$PGPATH/postmaster" - -wait= -wait_seconds=60 -logfile= -silence_echo= -shutdown_mode=smart -PGDATAOPTS="" -POSTOPTS="" - -while [ "$#" -gt 0 ] -do - case "$1" in - -h|--help|-\?) - echo "$help" - exit 0 - ;; - -V|--version) - echo "pg_ctl (PostgreSQL) $VERSION" - exit 0 - ;; - -D) - shift - # we need to do this so -D datadir shows in ps display - PGDATAOPTS="-D $1" - PGDATA="$1" - export PGDATA - ;; - -l) - logfile="$2" - shift;; - -l*) - logfile=`echo "$1" | sed 's/^-l//'` - ;; - -m) - shutdown_mode="$2" - shift;; - -m*) - shutdown_mode=`echo "$1" | sed 's/^-m//'` - ;; - -o) - shift - POSTOPTS="$1" - ;; - -p) - shift - po_path="$1" - ;; - -s) - silence_echo=: - ;; - -w) - wait=yes - ;; - -W) - wait=no - ;; - -*) - echo "$CMDNAME: invalid option: $1" 1>&2 - echo "$advice" 1>&2 - exit 1 - ;; - start) - op="start" - ;; - stop) - op="stop" - ;; - restart) - op="restart" - ;; - reload) - op="reload" - ;; - status) - op="status" - ;; - *) - echo "$CMDNAME: invalid operation mode: $1" 1>&2 - echo "$advice" 1>&2 - exit 1 - ;; - esac - shift -done - -if [ x"$op" = x"" ];then - echo "$CMDNAME: no operation mode specified" 1>&2 - echo "$advice" 1>&2 - exit 1 -fi - -if [ -z "$PGDATA" ];then - echo "$CMDNAME: no database directory specified and environment variable PGDATA unset" 1>&2 - echo "$advice" 1>&2 - exit 1 -fi - -if [ -z "$wait" ]; then - case "$op" in - start) wait=no;; - stop) wait=yes;; - restart) wait=no;; # must wait on shutdown anyhow - esac -fi - - -case "$shutdown_mode" in - s|smart) - sig="-TERM" - ;; - f|fast) - sig="-INT" - ;; - i|immediate) - sig="-QUIT" - ;; - *) - echo "$CMDNAME: invalid shutdown mode: $1" 1>&2 - echo "$advice" 1>&2 - exit 1 - ;; -esac - -if [ "$op" = "reload" ];then - sig="-HUP" - wait=no -fi - -DEFPOSTOPTS=$PGDATA/postmaster.opts.default -POSTOPTSFILE=$PGDATA/postmaster.opts -PIDFILE=$PGDATA/postmaster.pid -CONFFILE=$PGDATA/postgresql.conf - -if [ "$op" = "status" ];then - if [ -f "$PIDFILE" ];then - PID=`sed -n 1p $PIDFILE` - if [ "$PID" -lt 0 ];then - PID=`expr 0 - $PID` - echo "$CMDNAME: postgres is running (PID: $PID)" - else - echo "$CMDNAME: postmaster is running (PID: $PID)" - echo "Command line was:" - cat "$POSTOPTSFILE" - fi - exit 0 - else - echo "$CMDNAME: postmaster or postgres not running" - exit 1 - fi -fi - -if [ "$op" = "stop" -o "$op" = "restart" -o "$op" = "reload" ];then - if [ -f "$PIDFILE" ];then - PID=`sed -n 1p $PIDFILE` - if [ "$PID" -lt 0 ];then - PID=`expr 0 - $PID` - echo "$CMDNAME: cannot restart postmaster; postgres is running (PID: $PID)" 1>&2 - echo "Please terminate postgres and try again." 1>&2 - exit 1 - fi - - kill "$sig" $PID - - # wait for postmaster to shut down - if [ "$wait" = yes -o "$op" = restart ];then - cnt=0 - $silence_echo $ECHO_N "waiting for postmaster to shut down..."$ECHO_C - - while : - do - if [ -f "$PIDFILE" ];then - $silence_echo $ECHO_N "."$ECHO_C - cnt=`expr $cnt + 1` - if [ "$cnt" -gt "$wait_seconds" ];then - $silence_echo echo " failed" - echo "$CMDNAME: postmaster does not shut down" 1>&2 - exit 1 - fi - else - break - fi - sleep 1 - done - $silence_echo echo "done" - fi - - if [ "$op" = "reload" ];then - $silence_echo echo "postmaster successfully signaled" - else - if [ "$wait" = yes ];then - $silence_echo echo "postmaster successfully shut down" - else - $silence_echo echo "postmaster shutting down" - fi - fi - - else # ! -f $PIDFILE - echo "$CMDNAME: could not find $PIDFILE" 1>&2 - echo "Is postmaster running?" 1>&2 - if [ "$op" = "restart" ];then - echo "starting postmaster anyway" 1>&2 - else - exit 1 - fi - fi -fi # stop, restart, reload - -if [ "$op" = "start" -o "$op" = "restart" ];then - oldpid="" - if [ -f "$PIDFILE" ];then - echo "$CMDNAME: Another postmaster may be running. Trying to start postmaster anyway." 1>&2 - oldpid=`sed -n 1p $PIDFILE` - fi - - # no -o given - if [ -z "$POSTOPTS" ];then - if [ "$op" = "start" ];then - # if we are in start mode, then look for postmaster.opts.default - if [ -f "$DEFPOSTOPTS" ]; then - eval set X "`cat $DEFPOSTOPTS`"; shift - fi - else - # if we are in restart mode, then look for postmaster.opts - eval set X "`cat $POSTOPTSFILE`"; shift - po_path="$1" - shift - fi - else # -o given - eval set X "$POSTOPTS"; shift - fi - - if [ -n "$logfile" ]; then - "$po_path" ${1+"$@"} ${PGDATAOPTS+$PGDATAOPTS} </dev/null >>$logfile 2>&1 & - else - # when starting without log file, redirect stderr to stdout, so - # pg_ctl can be invoked with >$logfile and still have pg_ctl's - # stderr on the terminal. - "$po_path" ${1+"$@"} ${PGDATAOPTS+$PGDATAOPTS} </dev/null 2>&1 & - fi - - # if had an old lockfile, check to see if we were able to start - if [ -n "$oldpid" ];then - sleep 1 - if [ -f "$PIDFILE" ];then - if [ "`sed -n 1p $PIDFILE`" = "$oldpid" ];then - echo "$CMDNAME: cannot start postmaster" 1>&2 - echo "Examine the log output." 1>&2 - exit 1 - fi - fi - fi - -# FIXME: This is horribly misconceived. -# 1) If password authentication is set up, the connection will fail. -# 2) If a virtual host is set up, the connection may fail. -# 3) If network traffic filters are set up tight enough, the connection -# may fail. -# 4) When no Unix domain sockets are available, the connection will -# fail. (Using TCP/IP by default ain't better.) -# 5) If the dynamic loader is not set up correctly (for this user/at -# this time), psql will fail (to find libpq). -# 6) If psql is misconfigured, this may fail. - - # Attempt to use the right port - # Use PGPORT if set, otherwise look in the configuration file - if [ -z "$PGPORT" ];then - PGPORT=`sed -ne 's/^[ ]*port[^=]*=[ ]\+\([0-9]\+\).*/\1/p' $CONFFILE 2>/dev/null` - if [ -z "$PGPORT" ];then - PGPORT="$DEF_PGPORT" - fi - fi - - # wait for postmaster to start - if [ "$wait" = yes ];then - cnt=0 - $silence_echo $ECHO_N "waiting for postmaster to start..."$ECHO_C - while : - do - if "$PGPATH/psql" -p $PGPORT -l >/dev/null 2>&1 - then - break; - else - $silence_echo $ECHO_N "."$ECHO_C - cnt=`expr $cnt + 1` - if [ "$cnt" -gt "$wait_seconds" ];then - $silence_echo echo "failed" - echo "$CMDNAME: postmaster does not start" 1>&2 - exit 1 - fi - sleep 1 - fi - done - $silence_echo echo "done" - $silence_echo echo "postmaster successfully started" - else - $silence_echo echo "postmaster starting" - fi -fi # start or restart - -exit 0 |