mirror of
https://git.postgresql.org/git/postgresql.git
synced 2025-03-07 19:47:50 +08:00
Update pg_ctl ref page, help output, messages. Some repair to work better
with current postmaster.
This commit is contained in:
parent
f4710020d6
commit
c25b4dbf03
@ -1,42 +1,76 @@
|
||||
<!--
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/ref/pg_ctl-ref.sgml,v 1.3 2000/10/12 22:13:21 momjian Exp $
|
||||
$Header: /cvsroot/pgsql/doc/src/sgml/ref/pg_ctl-ref.sgml,v 1.4 2000/11/25 17:17:30 petere Exp $
|
||||
Postgres documentation
|
||||
-->
|
||||
|
||||
<refentry id="app-pg-ctl">
|
||||
<docinfo>
|
||||
<date>2000-11-25</date>
|
||||
</docinfo>
|
||||
|
||||
<refmeta>
|
||||
<refentrytitle id="app-pg-ctl-title">
|
||||
<application>pg_ctl</application>
|
||||
</refentrytitle>
|
||||
<refentrytitle id="app-pg-ctl-title"><application>pg_ctl</application></refentrytitle>
|
||||
<manvolnum>1</manvolnum>
|
||||
<refmiscinfo>Application</refmiscinfo>
|
||||
</refmeta>
|
||||
|
||||
<refnamediv>
|
||||
<refname>
|
||||
<application>pg_ctl</application>
|
||||
</refname>
|
||||
<refpurpose>
|
||||
Starts, stops, and restarts postmaster
|
||||
</refpurpose>
|
||||
<refname>pg_ctl</refname>
|
||||
<refpurpose>Starts, stops, or restarts postmaster</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsynopsisdiv>
|
||||
<refsynopsisdivinfo>
|
||||
<date>2000-04-05</date>
|
||||
</refsynopsisdivinfo>
|
||||
<cmdsynopsis>
|
||||
<command>pg_ctl</command>
|
||||
<arg choice="plain">start</arg>
|
||||
<arg>-w</arg>
|
||||
<arg>-D <replaceable>datadir</replaceable></arg>
|
||||
<arg>-p <replaceable>path</replaceable></arg>
|
||||
<arg>-o <replaceable>options</replaceable></arg>
|
||||
<sbr>
|
||||
<command>pg_ctl</command>
|
||||
<arg choice="plain">stop</arg>
|
||||
<arg>-w</arg>
|
||||
<arg>-D <replaceable>datadir</replaceable></arg>
|
||||
<arg>-m
|
||||
<group choice="plain">
|
||||
<arg>s[mart]</arg>
|
||||
<arg>f[ast]</arg>
|
||||
<arg>i[mmediate]</arg>
|
||||
</group>
|
||||
</arg>
|
||||
<sbr>
|
||||
<command>pg_ctl</command>
|
||||
<arg choice="plain">restart</arg>
|
||||
<arg>-w</arg>
|
||||
<arg>-D <replaceable>datadir</replaceable></arg>
|
||||
<arg>-m
|
||||
<group choice="plain">
|
||||
<arg>s[mart]</arg>
|
||||
<arg>f[ast]</arg>
|
||||
<arg>i[mmediate]</arg>
|
||||
</group>
|
||||
</arg>
|
||||
<arg>-o <replaceable>options</replaceable></arg>
|
||||
<sbr>
|
||||
<command>pg_ctl</command>
|
||||
<arg choice="plain">status</arg>
|
||||
<arg>-D <replaceable>datadir</replaceable></arg>
|
||||
</cmdsynopsis>
|
||||
</refsynopsisdiv>
|
||||
|
||||
<synopsis>
|
||||
pg_ctl [-w] [-D <replaceable class="parameter">datadir</replaceable>][-p <replaceable class="parameter">path</replaceable>] [-o "<replaceable class="parameter">options</replaceable>"] start
|
||||
pg_ctl [-w] [-D <replaceable class="parameter">datadir</replaceable>] [-m [s[mart]|f[ast]|i[mmediate]]] stop
|
||||
pg_ctl [-w] [-D <replaceable class="parameter">datadir</replaceable>] [-m [s[mart]|f[ast]|i[mmediate]]
|
||||
[-o "<replaceable class="parameter">options</replaceable>"] restart
|
||||
pg_ctl [-D <replaceable class="parameter">datadir</replaceable>] status
|
||||
</synopsis>
|
||||
|
||||
<refsect2 id="R2-APP-PGCTL-1">
|
||||
<title>
|
||||
Inputs
|
||||
</title>
|
||||
<refsect1 id="app-pg-ctl-description">
|
||||
<title>Description</title>
|
||||
<para>
|
||||
<application>pg_ctl</application> is a utility for starting,
|
||||
stopping, or restarting the <xref linkend="app-postmaster"
|
||||
endterm="app-postmaster-title">, or displaying the status of a
|
||||
running postmaster.
|
||||
</para>
|
||||
|
||||
<refsect2 id="app-pg-ctl-options">
|
||||
<title>Options</title>
|
||||
<para>
|
||||
|
||||
<variablelist>
|
||||
@ -44,8 +78,9 @@ pg_ctl [-D <replaceable class="parameter">datadir</replaceable>] status
|
||||
<term>-w</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Wait for the database server to come up, by
|
||||
watching for creation of the pid file (PGDATA/postmaster.pid).
|
||||
Wait for the database server to come up, by watching for
|
||||
creation of the pid file
|
||||
(<filename><replaceable>PGDATA</replaceable>/postmaster.pid</filename>).
|
||||
Times out after 60 seconds.
|
||||
</para>
|
||||
</listitem>
|
||||
@ -55,7 +90,9 @@ pg_ctl [-D <replaceable class="parameter">datadir</replaceable>] status
|
||||
<term>-D <replaceable class="parameter">datadir</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Specifies the database location for this database installation.
|
||||
Specifies the file system location of the database files. If
|
||||
this is omitted, the environment variable
|
||||
<envar>PGDATA</envar> is used.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@ -64,13 +101,18 @@ pg_ctl [-D <replaceable class="parameter">datadir</replaceable>] status
|
||||
<term>-p <replaceable class="parameter">path</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Specifies the path to the postmaster image.
|
||||
Specifies the location of the <filename>postmaster</filename>
|
||||
executable. By default the postmaster is taken from the same
|
||||
directory as pg_ctl, 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.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term>-o "<replaceable class="parameter">options</replaceable>"</term>
|
||||
<term>-o <replaceable class="parameter">options</replaceable></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Specifies options to be passed directly to
|
||||
@ -95,8 +137,8 @@ pg_ctl [-D <replaceable class="parameter">datadir</replaceable>] status
|
||||
<term>s</term>
|
||||
<listitem>
|
||||
<para>
|
||||
smart mode waits for all
|
||||
the clients to logout. This is the default.
|
||||
Smart mode waits for all the clients to disconnect. This
|
||||
is the default.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@ -106,8 +148,8 @@ pg_ctl [-D <replaceable class="parameter">datadir</replaceable>] status
|
||||
<term>f</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Fast mode sends SIGTERM to the backends; that means
|
||||
active transactions get rolled back.
|
||||
Fast mode does not wait for clients to disconnect. All
|
||||
active transactions will be rolled back.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@ -117,9 +159,8 @@ pg_ctl [-D <replaceable class="parameter">datadir</replaceable>] status
|
||||
<term>i</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Immediate mode sends SIGUSR1
|
||||
to the backends and lets them abort. In this case, database recovery
|
||||
will be necessary on the next start-up.
|
||||
Immediate mode will abort without complete shutdown. This
|
||||
will lead to a recovery run on restart.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@ -150,8 +191,8 @@ pg_ctl [-D <replaceable class="parameter">datadir</replaceable>] status
|
||||
<term>restart</term>
|
||||
<listitem>
|
||||
<para>
|
||||
Restart the <application>postmaster</application>, performing
|
||||
a stop/start sequence.
|
||||
Stop the <application>postmaster</application>, if one is running,
|
||||
and then start it again.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
@ -168,229 +209,107 @@ pg_ctl [-D <replaceable class="parameter">datadir</replaceable>] status
|
||||
</para>
|
||||
</refsect2>
|
||||
|
||||
<refsect2 id="R2-APP-PGCTL-2">
|
||||
<refsect2info>
|
||||
<date>1999-11-07</date>
|
||||
</refsect2info>
|
||||
<title>
|
||||
Outputs
|
||||
</title>
|
||||
<para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><computeroutput>pg_ctl: postmaster is <replaceable>state</replaceable> (pid: <replaceable>#</replaceable>)</computeroutput></term>
|
||||
<listitem>
|
||||
<para>
|
||||
Postmaster status.
|
||||
</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
<refsect2>
|
||||
<title>Files</title>
|
||||
|
||||
If there is an error condition, the backend error message will be displayed.
|
||||
<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>
|
||||
</refsect2>
|
||||
</refsynopsisdiv>
|
||||
|
||||
<refsect1 id="R1-APP-PGCTL-1">
|
||||
<title>
|
||||
Description
|
||||
</title>
|
||||
<para>
|
||||
<application>pg_ctl</application> is a utility for starting,
|
||||
stopping or restarting <application>postmaster</application>.
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
|
||||
<refsect1 id="R1-APP-PGCTL-2">
|
||||
<title>
|
||||
Usage
|
||||
</title>
|
||||
<title>Usage</title>
|
||||
|
||||
<refsect2 id="R2-APP-PGCTL-3">
|
||||
<title>
|
||||
Starting postmaster
|
||||
</title>
|
||||
<title>Starting the postmaster</title>
|
||||
|
||||
<para>
|
||||
To start up <application>postmaster</application>:
|
||||
|
||||
<programlisting>
|
||||
$ pg_ctl start
|
||||
</programlisting>
|
||||
<screen>
|
||||
<prompt>$</prompt> <userinput>pg_ctl start</userinput>
|
||||
</screen>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
If -w is supplied, pg_ctl waits for the database server to come up, by
|
||||
watching for creation of the pid file (PGDATA/postmaster.pid), for up
|
||||
to 60 seconds.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Parameters to invoke <application>postmaster</application> are
|
||||
taken from the following sources:
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>
|
||||
Path to postmaster: found in the command search path.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
Database directory: <envar>PGDATA</envar> environment variable.
|
||||
</para>
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
<para>
|
||||
Other parameters:
|
||||
<filename><envar>PGDATA</envar>/postmaster.opts.default</filename>.
|
||||
</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
<filename>postmaster.opts.default</filename> contains parameters
|
||||
for <application>postmaster</application>.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Note that <filename>postmaster.opts.default</filename> is
|
||||
installed by <application>initdb</application> from
|
||||
<filename>lib/postmaster.opts.default.sample</filename>
|
||||
under the <productname>Postgres</productname> installation
|
||||
directory (<filename>lib/postmaster.opts.default.sample</filename>
|
||||
is copied from
|
||||
<filename>src/bin/pg_ctl/postmaster.opts.default.sample</filename>
|
||||
while installing <productname>Postgres</productname>).
|
||||
</para>
|
||||
|
||||
<para>
|
||||
To override the default parameters you can use <option>-D</option>,
|
||||
<option>-p</option> and <option>-o</option> options.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
An example of starting the
|
||||
<application>postmaster</application>, blocking until
|
||||
postmaster comes up is:
|
||||
<programlisting>
|
||||
$ pg_ctl -w start
|
||||
</programlisting>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
To specify the <application>postmaster</application> binary path,
|
||||
try:
|
||||
|
||||
<programlisting>
|
||||
$ pg_ctl -p /usr/local/pgsql/bin/postmaster start
|
||||
</programlisting>
|
||||
An example of starting the <application>postmaster</application>,
|
||||
blocking until postmaster comes up is:
|
||||
<screen>
|
||||
<prompt>$</prompt> <userinput>pg_ctl -w start</userinput>
|
||||
</screen>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
For a <application>postmaster</application> using port 5433, and
|
||||
running without <function>fsync</function>, use:
|
||||
|
||||
<programlisting>
|
||||
$ pg_ctl -o "-o -F -p 5433" start
|
||||
</programlisting>
|
||||
<screen>
|
||||
<prompt>$</prompt> <userinput>pg_ctl -o "-F -p 5433" start</userinput>
|
||||
</screen>
|
||||
</para>
|
||||
</refsect2>
|
||||
|
||||
<refsect2 id="R2-APP-PGCTL-4">
|
||||
<title>
|
||||
Stopping postmaster
|
||||
</title>
|
||||
<title>Stopping the postmaster</title>
|
||||
<para>
|
||||
|
||||
<programlisting>
|
||||
$ pg_ctl stop
|
||||
</programlisting>
|
||||
|
||||
<screen>
|
||||
<prompt>$</prompt> <userinput>pg_ctl stop</userinput>
|
||||
</screen>
|
||||
stops postmaster. Using the <option>-m</option> switch allows one
|
||||
to control <emphasis>how</emphasis> the backend shuts down.
|
||||
<option>-w</option>
|
||||
waits for postmaster to shut down.
|
||||
<option>-m</option> specifies the shut down mode.
|
||||
<option>-w</option> waits for postmaster to shut down.
|
||||
</para>
|
||||
</refsect2>
|
||||
|
||||
<refsect2 id="R2-APP-PGCTL-5">
|
||||
<title>
|
||||
Restarting postmaster
|
||||
</title>
|
||||
<title>Restarting the postmaster</title>
|
||||
|
||||
<para>
|
||||
This is almost equivalent to stopping the
|
||||
<application>postmaster</application> then starting it
|
||||
again except that the parameters used before stopping
|
||||
it would be used too. This is done by saving them in
|
||||
$<envar>PGDATA</envar>/postmaster.opts file.
|
||||
<option>-w</option>, <option>-D</option>, <option>-m</option>,
|
||||
<option>-fast</option>, <option>-immediate</option> and
|
||||
<option>-o</option>
|
||||
can also be used in the restarting mode and they have the same meanings as
|
||||
described above.
|
||||
</para>
|
||||
|
||||
<para>
|
||||
To restart <application>postmaster</application> in the simplest
|
||||
form:
|
||||
|
||||
<programlisting>
|
||||
$ pg_ctl restart
|
||||
</programlisting>
|
||||
<application>postmaster</application> then starting it again
|
||||
except that pg_ctl saves and reuses the command line options that
|
||||
were passed to the previously running instance. To restart
|
||||
<application>postmaster</application> in the simplest form:
|
||||
<screen>
|
||||
<prompt>$</prompt> <userinput>pg_ctl restart</userinput>
|
||||
</screen>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
To restart <application>postmaster</application>,
|
||||
waiting for it to shut down and to come up:
|
||||
|
||||
<programlisting>
|
||||
$ pg_ctl -w restart
|
||||
</programlisting>
|
||||
<screen>
|
||||
<prompt>$</prompt> <userinput>pg_ctl -w restart</userinput>
|
||||
</screen>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
To restart using port 5433 and disabling fsync after restarting:
|
||||
|
||||
<programlisting>
|
||||
$ pg_ctl -o "-o -F -p 5433" restart
|
||||
</programlisting>
|
||||
<screen>
|
||||
<prompt>$</prompt> <userinput>pg_ctl -o "-F -p 5433" restart</userinput>
|
||||
</screen>
|
||||
</para>
|
||||
</refsect2>
|
||||
|
||||
<refsect2 id="R2-APP-PGCTL-6">
|
||||
<title>
|
||||
postmaster status
|
||||
</title>
|
||||
<title>Showing postmaster status</title>
|
||||
|
||||
<para>
|
||||
To get status information from postmaster:
|
||||
|
||||
<programlisting>
|
||||
$ pg_ctl status
|
||||
</programlisting>
|
||||
</para>
|
||||
|
||||
<para>
|
||||
Here is a sample output from <application>pg_ctl</application>:
|
||||
|
||||
<programlisting>
|
||||
Here is a sample status output from
|
||||
<application>pg_ctl</application>:
|
||||
<screen>
|
||||
<prompt>$</prompt> <userinput>pg_ctl status</userinput>
|
||||
<computeroutput>
|
||||
pg_ctl: postmaster is running (pid: 13718)
|
||||
options are:
|
||||
/usr/local/src/pgsql/current/bin/postmaster
|
||||
-p 5433
|
||||
-D /usr/local/src/pgsql/current/data
|
||||
-B 64
|
||||
-b /usr/local/src/pgsql/current/bin/postgres
|
||||
-N 32
|
||||
-o '-F'
|
||||
</programlisting>
|
||||
Command line was:
|
||||
/usr/local/pgsql/bin/postmaster '-D' '/usr/local/pgsql/data' '-p' '5433' '-B' '128'
|
||||
</computeroutput>
|
||||
</screen>
|
||||
This is the command line that would be invoked in restart mode.
|
||||
</para>
|
||||
</refsect2>
|
||||
</refsect1>
|
||||
|
@ -4,7 +4,7 @@
|
||||
#
|
||||
# Copyright (c) 1999, PostgreSQL Global Development Group
|
||||
#
|
||||
# $Header: /cvsroot/pgsql/src/bin/pg_ctl/Makefile,v 1.9 2000/09/17 13:02:35 petere Exp $
|
||||
# $Header: /cvsroot/pgsql/src/bin/pg_ctl/Makefile,v 1.10 2000/11/25 17:17:30 petere Exp $
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
@ -15,7 +15,9 @@ include $(top_builddir)/src/Makefile.global
|
||||
all: pg_ctl
|
||||
|
||||
pg_ctl: pg_ctl.sh
|
||||
cp $< $@
|
||||
sed -e 's/@VERSION@/$(VERSION)/g' \
|
||||
-e 's,@bindir@,$(bindir),g' \
|
||||
$< >$@
|
||||
chmod a+x $@
|
||||
|
||||
install: all installdirs
|
||||
|
@ -8,14 +8,50 @@
|
||||
#
|
||||
#
|
||||
# IDENTIFICATION
|
||||
# $Header: /cvsroot/pgsql/src/bin/pg_ctl/Attic/pg_ctl.sh,v 1.13 2000/10/24 19:11:15 petere Exp $
|
||||
# $Header: /cvsroot/pgsql/src/bin/pg_ctl/Attic/pg_ctl.sh,v 1.14 2000/11/25 17:17:30 petere Exp $
|
||||
#
|
||||
#-------------------------------------------------------------------------
|
||||
|
||||
CMDNAME=`basename $0`
|
||||
|
||||
help="\
|
||||
$CMDNAME is a utility to start, stop, restart, and report the status
|
||||
of a PostgreSQL server.
|
||||
|
||||
Usage:
|
||||
$CMDNAME start [-w] [-D DATADIR] [-p PATH-TO-POSTMASTER] [-o \"OPTIONS\"]
|
||||
$CMDNAME stop [-w] [-D DATADIR] [-m SHUTDOWN-MODE]
|
||||
$CMDNAME restart [-w] [-D DATADIR] [-m SHUTDOWN-MODE] [-o \"OPTIONS\"]
|
||||
$CMDNAME status [-D DATADIR]
|
||||
|
||||
Options:
|
||||
-D DATADIR Location of the database storage area
|
||||
-m SHUTDOWN-MODE May be 'smart', 'fast', or 'immediate'
|
||||
-o OPTIONS Command line options to pass to the postmaster
|
||||
(PostgreSQL server executable)
|
||||
-p PATH-TO-POSTMASTER Normally not necessary
|
||||
-w Wait until operation completes
|
||||
|
||||
If the -D option is omitted, the environment variable PGDATA is used.
|
||||
|
||||
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 run on restart
|
||||
|
||||
Report bugs to <pgsql-bugs@postgresql.org>."
|
||||
|
||||
advice="\
|
||||
Try '$CMDNAME --help' for more information."
|
||||
|
||||
|
||||
# Placed here during build
|
||||
bindir='@bindir@'
|
||||
VERSION='@VERSION@'
|
||||
|
||||
# Check for echo -n vs echo \c
|
||||
|
||||
ECHO=echo
|
||||
if echo '\c' | grep -s c >/dev/null 2>&1
|
||||
then
|
||||
ECHO_N="echo -n"
|
||||
@ -28,38 +64,35 @@ fi
|
||||
#
|
||||
# Find out where we're located
|
||||
#
|
||||
if $ECHO "$0" | grep '/' > /dev/null 2>&1
|
||||
if echo "$0" | grep '/' > /dev/null 2>&1
|
||||
then
|
||||
# explicit dir name given
|
||||
PGPATH=`$ECHO $0 | sed 's,/[^/]*$,,'` # (dirname command is not portable)
|
||||
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'`
|
||||
for dir in `echo "$PATH" | sed 's/:/ /g'`
|
||||
do
|
||||
# empty entry in path means current dir
|
||||
[ -z "$dir" ] && dir='.'
|
||||
if [ -f "$dir/$CMDNAME" ]
|
||||
then
|
||||
PGPATH="$dir"
|
||||
self_path="$dir"
|
||||
break
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
# Check if needed programs actually exist in path
|
||||
for prog in postmaster psql
|
||||
do
|
||||
if [ ! -x "$PGPATH/$prog" ]
|
||||
then
|
||||
$ECHO "The program $prog needed by $CMDNAME could not be found. It was"
|
||||
$ECHO "expected at:"
|
||||
$ECHO " $PGPATH/$prog"
|
||||
$ECHO "If this is not the correct directory, please start $CMDNAME"
|
||||
$ECHO "with a full search path. Otherwise make sure that the program"
|
||||
$ECHO "was installed successfully."
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
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
|
||||
|
||||
@ -69,14 +102,17 @@ sig="-TERM"
|
||||
while [ "$#" -gt 0 ]
|
||||
do
|
||||
case $1 in
|
||||
-h|--help)
|
||||
usage=1
|
||||
break
|
||||
;;
|
||||
-h|--help|-\?)
|
||||
echo "$help"
|
||||
exit 0
|
||||
;;
|
||||
-V|--version)
|
||||
echo "pg_ctl (PostgreSQL) $VERSION"
|
||||
exit 0
|
||||
;;
|
||||
-D)
|
||||
shift
|
||||
PGDATA="$1"
|
||||
export PGDATA
|
||||
;;
|
||||
-p)
|
||||
shift
|
||||
@ -94,8 +130,9 @@ do
|
||||
sig="-QUIT"
|
||||
;;
|
||||
*)
|
||||
$ECHO "$CMDNAME: Wrong shutdown mode $sigopt"
|
||||
usage=1
|
||||
echo "$CMDNAME: wrong shutdown mode: $1" 1>&2
|
||||
echo "$advice" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
@ -106,6 +143,11 @@ do
|
||||
shift
|
||||
POSTOPTS="$1"
|
||||
;;
|
||||
-*)
|
||||
echo "$CMDNAME: invalid option: $1" 1>&2
|
||||
echo "$advice" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
start)
|
||||
op="start"
|
||||
;;
|
||||
@ -119,23 +161,23 @@ do
|
||||
op="status"
|
||||
;;
|
||||
*)
|
||||
usage=1
|
||||
break
|
||||
echo "$CMDNAME: invalid operation mode: $1" 1>&2
|
||||
echo "$advice" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
|
||||
if [ "$usage" = 1 -o "$op" = "" ];then
|
||||
$ECHO "Usage: $CMDNAME [-w][-D database_dir][-p path_to_postmaster][-o \"postmaster_opts\"] start"
|
||||
$ECHO " $CMDNAME [-w][-D database_dir][-m s[mart]|f[ast]|i[mmediate]] stop"
|
||||
$ECHO " $CMDNAME [-w][-D database_dir][-m s[mart]|f[ast]|i[mmediate]][-o \"postmaster_opts\"] restart"
|
||||
$ECHO " $CMDNAME [-D database_dir] status"
|
||||
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 or environment variable \$PGDATA is specified"
|
||||
echo "$CMDNAME: no database directory or environment variable \$PGDATA is specified" 1>&2
|
||||
echo "$advice" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@ -148,15 +190,15 @@ if [ $op = "status" ];then
|
||||
PID=`cat $PIDFILE`
|
||||
if [ $PID -lt 0 ];then
|
||||
PID=`expr 0 - $PID`
|
||||
$ECHO "$CMDNAME: postgres is running (pid: $PID)"
|
||||
echo "$CMDNAME: postgres is running (pid: $PID)"
|
||||
else
|
||||
$ECHO "$CMDNAME: postmaster is running (pid: $PID)"
|
||||
$ECHO "options are:"
|
||||
$ECHO "`cat $POSTOPTSFILE`"
|
||||
echo "$CMDNAME: postmaster is running (pid: $PID)"
|
||||
echo "Command line was:"
|
||||
echo "`cat $POSTOPTSFILE`"
|
||||
fi
|
||||
exit 0
|
||||
else
|
||||
$ECHO "$CMDNAME: postmaster or postgres is not running"
|
||||
echo "$CMDNAME: postmaster or postgres is not running"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
@ -166,8 +208,8 @@ if [ $op = "stop" -o $op = "restart" ];then
|
||||
PID=`cat $PIDFILE`
|
||||
if [ $PID -lt 0 ];then
|
||||
PID=`expr 0 - $PID`
|
||||
$ECHO "$CMDNAME: Cannot restart postmaster. postgres is running (pid: $PID)"
|
||||
$ECHO "Please terminate postgres and try again"
|
||||
echo "$CMDNAME: Cannot restart postmaster. postgres is running (pid: $PID)"
|
||||
echo "Please terminate postgres and try again"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@ -176,7 +218,7 @@ if [ $op = "stop" -o $op = "restart" ];then
|
||||
# wait for postmaster shutting down
|
||||
if [ "$wait" = 1 -o $op = "restart" ];then
|
||||
cnt=0
|
||||
$ECHO_N "Waiting for postmaster shutting down.."$ECHO_C
|
||||
$ECHO_N "Waiting for postmaster to shut down.."$ECHO_C
|
||||
|
||||
while :
|
||||
do
|
||||
@ -184,7 +226,7 @@ if [ $op = "stop" -o $op = "restart" ];then
|
||||
$ECHO_N "."$ECHO_C
|
||||
cnt=`expr $cnt + 1`
|
||||
if [ $cnt -gt 60 ];then
|
||||
$ECHO "$CMDNAME: postmaster does not shut down"
|
||||
echo "$CMDNAME: postmaster does not shut down"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
@ -192,16 +234,16 @@ if [ $op = "stop" -o $op = "restart" ];then
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
$ECHO "done."
|
||||
echo "done"
|
||||
fi
|
||||
|
||||
$ECHO "postmaster successfully shut down."
|
||||
echo "postmaster successfully shut down"
|
||||
|
||||
else
|
||||
$ECHO "$CMDNAME: Can't find $PIDFILE."
|
||||
$ECHO "Is postmaster running?"
|
||||
echo "$CMDNAME: cannot find $PIDFILE"
|
||||
echo "Is postmaster running?"
|
||||
if [ $op = "restart" ];then
|
||||
$ECHO "Anyway, I'm going to start up postmaster..."
|
||||
echo "starting postmaster anyway..."
|
||||
else
|
||||
exit 1
|
||||
fi
|
||||
@ -210,7 +252,7 @@ fi
|
||||
|
||||
if [ $op = "start" -o $op = "restart" ];then
|
||||
if [ -f $PIDFILE ];then
|
||||
$ECHO "$CMDNAME: It seems another postmaster is running. Try to start postmaster anyway."
|
||||
echo "$CMDNAME: It seems another postmaster is running. Trying to start postmaster anyway."
|
||||
pid=`cat $PIDFILE`
|
||||
fi
|
||||
|
||||
@ -219,21 +261,22 @@ if [ $op = "start" -o $op = "restart" ];then
|
||||
if [ $op = "start" ];then
|
||||
# if we are in start mode, then look for postmaster.opts.default
|
||||
if [ -f $DEFPOSTOPTS ];then
|
||||
eval "$po_path `cat $DEFPOSTOPTS`" &
|
||||
$po_path -D $PGDATA `cat $DEFPOSTOPTS` &
|
||||
else
|
||||
$po_path &
|
||||
$po_path -D $PGDATA &
|
||||
fi
|
||||
else
|
||||
# if we are in restart mode, then look postmaster.opts
|
||||
eval `cat $POSTOPTSFILE` &
|
||||
`cat $POSTOPTSFILE` &
|
||||
fi
|
||||
else
|
||||
eval "$po_path $POSTOPTS " &
|
||||
# -o given
|
||||
$po_path -D $PGDATA $POSTOPTS &
|
||||
fi
|
||||
|
||||
if [ -f $PIDFILE ];then
|
||||
if [ "`cat $PIDFILE`" = "$pid" ];then
|
||||
$ECHO "$CMDNAME: Cannot start postmaster. Is another postmaster is running?"
|
||||
echo "$CMDNAME: Cannot start postmaster. Is another postmaster is running?"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
@ -241,7 +284,7 @@ if [ $op = "start" -o $op = "restart" ];then
|
||||
# wait for postmaster starting up
|
||||
if [ "$wait" = 1 ];then
|
||||
cnt=0
|
||||
$ECHO_N "Waiting for postmaster starting up.."$ECHO_C
|
||||
$ECHO_N "Waiting for postmaster to start up.."$ECHO_C
|
||||
while :
|
||||
do
|
||||
if psql -l >/dev/null 2>&1
|
||||
@ -251,16 +294,16 @@ if [ $op = "start" -o $op = "restart" ];then
|
||||
$ECHO_N "."$ECHO_C
|
||||
cnt=`expr $cnt + 1`
|
||||
if [ $cnt -gt 60 ];then
|
||||
$ECHO "$CMDNAME: postmaster does not start up"
|
||||
echo "$CMDNAME: postmaster does not start up"
|
||||
exit 1
|
||||
fi
|
||||
sleep 1
|
||||
fi
|
||||
done
|
||||
$ECHO "done."
|
||||
echo "done"
|
||||
fi
|
||||
|
||||
$ECHO "postmaster successfully started up."
|
||||
echo "postmaster successfully started up"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
|
Loading…
Reference in New Issue
Block a user