⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pg_ctl.sh

📁 PostgreSQL7.4.6 for Linux
💻 SH
字号:
#! /bin/sh#-------------------------------------------------------------------------## pg_ctl.sh--#    Start/Stop/Restart/HUP/Report status of postmaster## Copyright (c) 2001-2003, PostgreSQL Global Development Group### IDENTIFICATION#    $Header: /cvsroot/pgsql/src/bin/pg_ctl/Attic/pg_ctl.sh,v 1.36.4.2 2004/10/22 00:24:27 tgl 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 necessaryOptions 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 restartReport bugs to <pgsql-bugs@postgresql.org>."advice="\Try \"$CMDNAME --help\" for more information."# Placed here during buildbindir='@bindir@'VERSION='@VERSION@'DEF_PGPORT='@DEF_PGPORT@'# protect the log fileumask 077# Check for echo -n vs echo \cif echo '\c' | grep -s c >/dev/null 2>&1then    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        donefi# Check if needed programs actually exist in pathif [ -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 1fipo_path="$PGPATH/postmaster"if [ `$PGPATH/pg_id -u` -eq 0 ]then    echo "$CMDNAME: cannot be run as root" 1>&2    echo "Please log in (using, e.g., \"su\") as the (unprivileged) user that will" 1>&2    echo "own the server process." 1>&2    exit 1fiwait=wait_seconds=60logfile=silence_echo=shutdown_mode=smartPGDATAOPTS=""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    shiftdoneif [ x"$op" = x"" ];then    echo "$CMDNAME: no operation mode specified" 1>&2    echo "$advice" 1>&2    exit 1fiif [ -z "$PGDATA" ];then    echo "$CMDNAME: no database directory specified and environment variable PGDATA unset" 1>&2    echo "$advice" 1>&2    exit 1fiif [ -z "$wait" ]; then    case "$op" in	start)      wait=no;;	stop)       wait=yes;;	restart)    wait=no;;   # must wait on shutdown anyhow    esacficase "$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	;;esacif [ "$op" = "reload" ];then	sig="-HUP"	wait=nofi# Prevent duplicate of -D flags on each restartif [ "$op" = "restart" ];then	PGDATAOPTS=""fiDEFPOSTOPTS=$PGDATA/postmaster.opts.defaultPOSTOPTSFILE=$PGDATA/postmaster.optsPIDFILE=$PGDATA/postmaster.pidCONFFILE=$PGDATA/postgresql.confif [ "$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    fifiif [ "$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	    $silence_echo echo "postmaster successfully shut down"	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    fifi # stop, restart, reloadif [ "$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"    fi    $silence_echo echo "postmaster successfully started"fi # start or restartexit 0

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -