diff options
-rw-r--r-- | doc/src/sgml/ref/pg_ctl-ref.sgml | 116 | ||||
-rw-r--r-- | src/bin/pg_ctl/Makefile | 3 | ||||
-rwxr-xr-x | src/bin/pg_ctl/pg_ctl.sh | 34 |
3 files changed, 114 insertions, 39 deletions
diff --git a/doc/src/sgml/ref/pg_ctl-ref.sgml b/doc/src/sgml/ref/pg_ctl-ref.sgml index 1ce8cfc9f20..74f098b9c5e 100644 --- a/doc/src/sgml/ref/pg_ctl-ref.sgml +++ b/doc/src/sgml/ref/pg_ctl-ref.sgml @@ -1,5 +1,5 @@ <!-- -$Header: /cvsroot/pgsql/doc/src/sgml/ref/pg_ctl-ref.sgml,v 1.18 2003/01/19 00:13:30 momjian Exp $ +$Header: /cvsroot/pgsql/doc/src/sgml/ref/pg_ctl-ref.sgml,v 1.19 2003/03/20 05:00:14 momjian Exp $ PostgreSQL documentation --> @@ -73,22 +73,21 @@ PostgreSQL documentation <productname>PostgreSQL</productname> backend server, or displaying the status of a running postmaster. Although the postmaster can be started manually, <application>pg_ctl</application> encapsulates - tasks such as redirecting log output, properly detaching from the - terminal and process group, and it provides convenient options for + tasks such as redirecting log output and properly detaching from the + terminal and process group. It also provides convenient options for controlled shutdown. </para> <para> In <option>start</option> mode, a new postmaster is launched. The - server is started in the background, the standard input attached to + server is started in the background, and standard input is attached to <filename>/dev/null</filename>. The standard output and standard - error are either appended to a log file, if the <option>-l</option> - option is used, or are redirected to - <application>pg_ctl</application>'s standard output (not standard - error). If no log file is chosen, the standard output of - <application>pg_ctl</application> should be redirected to a file or - piped to another process, for example a log rotating program, - otherwise the postmaster will write its output the the controlling + error are either appended to a log file (if the <option>-l</option> + option is used), or redirected to <application>pg_ctl</application>'s + standard output (not standard error). If no log file is chosen, the + standard output of <application>pg_ctl</application> should be redirected + to a file or piped to another process, for example a log rotating program, + otherwise the postmaster will write its output to the controlling terminal (from the background) and will not leave the shell's process group. </para> @@ -102,8 +101,8 @@ PostgreSQL documentation not wait for clients to disconnect. All active transactions are rolled back and clients are forcibly disconnected, then the database is shut down. <quote>Immediate</quote> mode will abort - all server processes without clean shutdown. This will lead to a recovery - run on restart. + all server processes without a clean shutdown. This will lead to + a recovery run on restart. </para> <para> @@ -121,9 +120,9 @@ PostgreSQL documentation </para> <para> - <option>status</option> mode checks whether a postmaster is running - and if so displays the <acronym>PID</acronym> and the command line - options that were used to invoke it. + <option>status</option> mode checks whether a postmaster is running. + If it is, the <acronym>PID</acronym> and the command line + options that were used to invoke it are displayed. </para> </refsect1> @@ -188,7 +187,7 @@ PostgreSQL documentation <para> Specifies the location of the <filename>postmaster</filename> executable. By default the postmaster is taken from the same - directory as <command>pg_ctl</>, or failing that, the hard-wired + directory as <command>pg_ctl</command>, or failing that, the hard-wired installation directory. It is not necessary to use this option unless you are doing something unusual and get errors that the postmaster was not found. @@ -210,7 +209,16 @@ PostgreSQL documentation <listitem> <para> Wait for the start or shutdown to complete. Times out after - 60 seconds. This is the default for shutdowns. + 60 seconds. This is the default for shutdowns. A successful + shutdown is indicated by removal of the <acronym>PID</scronym> + file. For starting up, a successful <command>psql -l</command> + indicates success. <command>pg_ctl</command> will attempt to + use the proper port for psql. If the environment variable + PGPORT exists, that is used. Otherwise, it will see if a port + has been set in the <filename>postgresql.conf</filename> file. + If neither of those is used, it will use the default port that + <productname>PostgreSQL</productname> was compiled with + (5432 by default). </para> </listitem> </varlistentry> @@ -238,7 +246,17 @@ PostgreSQL documentation <listitem> <para> - Default data direction location + Default data directory location. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><envar>PGPORT</envar></term> + + <listitem> + <para> + Default port for <xref linkend="app-psql"> (used by the -w option). </para> </listitem> </varlistentry> @@ -253,12 +271,58 @@ PostgreSQL documentation <refsect1> <title>Files</title> - <para> - If the file <filename>postmaster.opts.default</filename> exists in - the data directory, the contents of the file will be passed as - options to the <application>postmaster</application>, unless - overridden by the <option>-o</option> option. - </para> + <variablelist> + <varlistentry> + <term><filename>postmaster.pid</filename></term> + + <listitem> + <para>The existence of this file in the data directory is used to help + <application>pg_ctl</application> determine if the server is + currently running or not. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><filename>postmaster.opts.default</filename></term> + + <listitem> + <para>If this file exists in the data directory, + <application>pg_ctl</application> (in <option>start</option> mode) + will pass the contents of the file as options to the + <application>postmaster</application>, unless overridden + by the <option>-o</option> option. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><filename>postmaster.opts</filename></term> + + <listitem> + <para>If this file exists in the data directory, + <application>pg_ctl</application> (in <option>restart</option> mode) + will pass the contents of the file as options to the + <application>postmaster</application>, unless overridden + by the <option>-o</option> option. The contents of this file + are also displayed in <option>status</option> mode. + </para> + </listitem> + </varlistentry> + + <varlistentry> + <term><filename>postgresql.conf</filename></term> + + <listitem> + <para>This file, located in the data directory, is parsed to + find the proper port to send to the + <application>psql</application> when the <option>-w</option> + is given in <option>start</option> mode. + </para> + </listitem> + </varlistentry> + + </variablelist> </refsect1> @@ -268,7 +332,7 @@ PostgreSQL documentation <para> Waiting for complete start is not a well-defined operation and may fail if access control is set up so that a local client cannot - connect without manual interaction. It should be avoided. + connect without manual interaction (e.g. password authentication). </para> </refsect1> diff --git a/src/bin/pg_ctl/Makefile b/src/bin/pg_ctl/Makefile index fb4234dcc84..27343f6db6c 100644 --- a/src/bin/pg_ctl/Makefile +++ b/src/bin/pg_ctl/Makefile @@ -4,7 +4,7 @@ # # Copyright (c) 1999, PostgreSQL Global Development Group # -# $Header: /cvsroot/pgsql/src/bin/pg_ctl/Makefile,v 1.10 2000/11/25 17:17:30 petere Exp $ +# $Header: /cvsroot/pgsql/src/bin/pg_ctl/Makefile,v 1.11 2003/03/20 05:00:14 momjian Exp $ # #------------------------------------------------------------------------- @@ -17,6 +17,7 @@ all: pg_ctl pg_ctl: pg_ctl.sh sed -e 's/@VERSION@/$(VERSION)/g' \ -e 's,@bindir@,$(bindir),g' \ + -e 's,@DEF_PGPORT@,$(DEF_PGPORT),g' \ $< >$@ chmod a+x $@ diff --git a/src/bin/pg_ctl/pg_ctl.sh b/src/bin/pg_ctl/pg_ctl.sh index 7e7828b1fae..aa5d3ebb5ff 100755 --- a/src/bin/pg_ctl/pg_ctl.sh +++ b/src/bin/pg_ctl/pg_ctl.sh @@ -8,7 +8,7 @@ # # # IDENTIFICATION -# $Header: /cvsroot/pgsql/src/bin/pg_ctl/Attic/pg_ctl.sh,v 1.31 2003/02/14 22:18:25 momjian Exp $ +# $Header: /cvsroot/pgsql/src/bin/pg_ctl/Attic/pg_ctl.sh,v 1.32 2003/03/20 05:00:14 momjian Exp $ # #------------------------------------------------------------------------- @@ -60,6 +60,7 @@ Try '$CMDNAME --help' for more information." # Placed here during build bindir='@bindir@' VERSION='@VERSION@' +DEF_PGPORT='@DEF_PGPORT@' # protect the log file umask 077 @@ -240,6 +241,7 @@ 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 @@ -356,12 +358,6 @@ if [ "$op" = "start" -o "$op" = "restart" ];then 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 # 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. @@ -369,12 +365,26 @@ if [ "$op" = "start" -o "$op" = "restart" ];then # may fail. # 4) When no Unix domain sockets are available, the connection will # fail. (Using TCP/IP by default ain't better.) -# 5) When a different port is configured, the connection will fail -# or go to the wrong server. -# 6) If the dynamic loader is not set up correctly (for this user/at +# 5) If the dynamic loader is not set up correctly (for this user/at # this time), psql will fail (to find libpq). -# 7) If psql is misconfigured, this may fail. - if "$PGPATH/psql" -l >/dev/null 2>&1 +# 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 |