2 $Header: /cvsroot/pgsql/doc/src/sgml/ref/pg_ctl-ref.sgml,v 1.20 2003/03/20 17:37:46 momjian Exp $
3 PostgreSQL documentation
6 <refentry id="app-pg-ctl">
8 <refentrytitle id="app-pg-ctl-title"><application>pg_ctl</application></refentrytitle>
9 <manvolnum>1</manvolnum>
10 <refmiscinfo>Application</refmiscinfo>
14 <refname>pg_ctl</refname>
15 <refpurpose>start, stop, or restart a <productname>PostgreSQL</productname> server</refpurpose>
20 <command>pg_ctl</command>
21 <arg choice="plain">start</arg>
24 <arg>-D <replaceable>datadir</replaceable></arg>
25 <arg>-l <replaceable>filename</replaceable></arg>
26 <arg>-o <replaceable>options</replaceable></arg>
27 <arg>-p <replaceable>path</replaceable></arg>
29 <command>pg_ctl</command>
30 <arg choice="plain">stop</arg>
33 <arg>-D <replaceable>datadir</replaceable></arg>
35 <group choice="plain">
38 <arg>i[mmediate]</arg>
42 <command>pg_ctl</command>
43 <arg choice="plain">restart</arg>
46 <arg>-D <replaceable>datadir</replaceable></arg>
48 <group choice="plain">
51 <arg>i[mmediate]</arg>
54 <arg>-o <replaceable>options</replaceable></arg>
56 <command>pg_ctl</command>
57 <arg choice="plain">reload</arg>
59 <arg>-D <replaceable>datadir</replaceable></arg>
61 <command>pg_ctl</command>
62 <arg choice="plain">status</arg>
63 <arg>-D <replaceable>datadir</replaceable></arg>
68 <refsect1 id="app-pg-ctl-description">
69 <title>Description</title>
71 <application>pg_ctl</application> is a utility for starting,
72 stopping, or restarting <xref linkend="app-postmaster">, the
73 <productname>PostgreSQL</productname> backend server, or displaying
74 the status of a running postmaster. Although the postmaster can be
75 started manually, <application>pg_ctl</application> encapsulates
76 tasks such as redirecting log output and properly detaching from the
77 terminal and process group. It also provides convenient options for
82 In <option>start</option> mode, a new postmaster is launched. The
83 server is started in the background, and standard input is attached to
84 <filename>/dev/null</filename>. The standard output and standard
85 error are either appended to a log file (if the <option>-l</option>
86 option is used), or redirected to <application>pg_ctl</application>'s
87 standard output (not standard error). If no log file is chosen, the
88 standard output of <application>pg_ctl</application> should be redirected
89 to a file or piped to another process, for example a log rotating program,
90 otherwise the postmaster will write its output to the controlling
91 terminal (from the background) and will not leave the shell's
96 In <option>stop</option> mode, the postmaster that is running in
97 the specified data directory is shut down. Three different
98 shutdown methods can be selected with the <option>-m</option>
99 option: <quote>Smart</quote> mode waits for all the clients to
100 disconnect. This is the default. <quote>Fast</quote> mode does
101 not wait for clients to disconnect. All active transactions are
102 rolled back and clients are forcibly disconnected, then the
103 database is shut down. <quote>Immediate</quote> mode will abort
104 all server processes without a clean shutdown. This will lead to
105 a recovery run on restart.
109 <option>restart</option> mode effectively executes a stop followed
110 by a start. This allows the changing of postmaster command line
115 <option>reload</option> mode simply sends the postmaster a <systemitem>SIGHUP</> signal,
116 causing it to reread its configuration files
117 (<filename>postgresql.conf</filename>, <filename>pg_hba.conf</filename>,
118 etc.). This allows changing of configuration-file options that do not
119 require a complete restart to take effect.
123 <option>status</option> mode checks whether a postmaster is running.
124 If it is, the <acronym>PID</acronym> and the command line
125 options that were used to invoke it are displayed.
129 <refsect1 id="app-pg-ctl-options">
130 <title>Options</title>
136 <term>-D <replaceable class="parameter">datadir</replaceable></term>
139 Specifies the file system location of the database files. If
140 this is omitted, the environment variable
141 <envar>PGDATA</envar> is used.
147 <term>-l <replaceable class="parameter">filename</replaceable></term>
150 Append the server log output to
151 <replaceable>filename</replaceable>. If the file does not
152 exist, it is created. The <systemitem>umask</> is set to 077, so access to
153 the log file from other users is disallowed by default.
159 <term>-m <replaceable class="parameter">mode</replaceable></term>
162 Specifies the shutdown mode. <replaceable>mode</replaceable>
163 may be <literal>smart</literal>, <literal>fast</literal>, or
164 <literal>immediate</literal>, or the first letter of one of
171 <term>-o <replaceable class="parameter">options</replaceable></term>
174 Specifies options to be passed directly to
175 <application>postmaster</application>.
178 The parameters are usually surrounded by single or double
179 quotes to ensure that they are passed through as a group.
185 <term>-p <replaceable class="parameter">path</replaceable></term>
188 Specifies the location of the <filename>postmaster</filename>
189 executable. By default the postmaster is taken from the same
190 directory as <command>pg_ctl</command>, or failing that, the hard-wired
191 installation directory. It is not necessary to use this
192 option unless you are doing something unusual and get errors
193 that the postmaster was not found.
202 Only print errors, no informational messages.
211 Wait for the start or shutdown to complete. Times out after
212 60 seconds. This is the default for shutdowns. A successful
213 shutdown is indicated by removal of the <acronym>PID</acronym>
214 file. For starting up, a successful <command>psql -l</command>
215 indicates success. <command>pg_ctl</command> will attempt to
216 use the proper port for psql. If the environment variable
217 PGPORT exists, that is used. Otherwise, it will see if a port
218 has been set in the <filename>postgresql.conf</filename> file.
219 If neither of those is used, it will use the default port that
220 <productname>PostgreSQL</productname> was compiled with
230 Do not wait for start or shutdown to complete. This is the
231 default for starts and restarts.
241 <title>Environment</title>
245 <term><envar>PGDATA</envar></term>
249 Default data directory location.
255 <term><envar>PGPORT</envar></term>
259 Default port for <xref linkend="app-psql"> (used by the -w option).
266 For others, see <xref linkend="app-postmaster">.
276 <term><filename>postmaster.pid</filename></term>
279 <para>The existence of this file in the data directory is used to help
280 <application>pg_ctl</application> determine if the server is
281 currently running or not.
287 <term><filename>postmaster.opts.default</filename></term>
290 <para>If this file exists in the data directory,
291 <application>pg_ctl</application> (in <option>start</option> mode)
292 will pass the contents of the file as options to the
293 <application>postmaster</application>, unless overridden
294 by the <option>-o</option> option.
300 <term><filename>postmaster.opts</filename></term>
303 <para>If this file exists in the data directory,
304 <application>pg_ctl</application> (in <option>restart</option> mode)
305 will pass the contents of the file as options to the
306 <application>postmaster</application>, unless overridden
307 by the <option>-o</option> option. The contents of this file
308 are also displayed in <option>status</option> mode.
314 <term><filename>postgresql.conf</filename></term>
317 <para>This file, located in the data directory, is parsed to
318 find the proper port to send to the
319 <application>psql</application> when the <option>-w</option>
320 is given in <option>start</option> mode.
333 Waiting for complete start is not a well-defined operation and may
334 fail if access control is set up so that a local client cannot
335 connect without manual interaction (e.g. password authentication).
340 <refsect1 id="R1-APP-PGCTL-2">
341 <title>Examples</title>
343 <refsect2 id="R2-APP-PGCTL-3">
344 <title>Starting the postmaster</title>
347 To start up a <application>postmaster</application>:
349 <prompt>$</prompt> <userinput>pg_ctl start</userinput>
354 An example of starting the <application>postmaster</application>,
355 blocking until the postmaster comes up is:
357 <prompt>$</prompt> <userinput>pg_ctl -w start</userinput>
362 For a <application>postmaster</application> using port 5433, and
363 running without <function>fsync</function>, use:
365 <prompt>$</prompt> <userinput>pg_ctl -o "-F -p 5433" start</userinput>
370 <refsect2 id="R2-APP-PGCTL-4">
371 <title>Stopping the postmaster</title>
374 <prompt>$</prompt> <userinput>pg_ctl stop</userinput>
376 stops the postmaster. Using the <option>-m</option> switch allows one
377 to control <emphasis>how</emphasis> the backend shuts down.
381 <refsect2 id="R2-APP-PGCTL-5">
382 <title>Restarting the postmaster</title>
385 This is almost equivalent to stopping the
386 <application>postmaster</application> and starting it again
387 except that <command>pg_ctl</command> saves and reuses the command line options that
388 were passed to the previously running instance. To restart
389 the <application>postmaster</application> in the simplest form:
391 <prompt>$</prompt> <userinput>pg_ctl restart</userinput>
396 To restart <application>postmaster</application>,
397 waiting for it to shut down and to come up:
399 <prompt>$</prompt> <userinput>pg_ctl -w restart</userinput>
404 To restart using port 5433 and disabling <function>fsync</> after restarting:
406 <prompt>$</prompt> <userinput>pg_ctl -o "-F -p 5433" restart</userinput>
411 <refsect2 id="R2-APP-PGCTL-6">
412 <title>Showing postmaster status</title>
415 Here is a sample status output from
416 <application>pg_ctl</application>:
418 <prompt>$</prompt> <userinput>pg_ctl status</userinput>
420 pg_ctl: postmaster is running (pid: 13718)
422 /usr/local/pgsql/bin/postmaster '-D' '/usr/local/pgsql/data' '-p' '5433' '-B' '128'
425 This is the command line that would be invoked in restart mode.
432 <title>See Also</title>
435 <xref linkend="app-postmaster">, &cite-admin;
441 <!-- Keep this comment at the end of the file
446 sgml-minimize-attributes:nil
447 sgml-always-quote-attributes:t
450 sgml-parent-document:nil
451 sgml-default-dtd-file:"../reference.ced"
452 sgml-exposed-tags:nil
453 sgml-local-catalogs:("/usr/lib/sgml/catalog")
454 sgml-local-ecat-files:nil