]> granicus.if.org Git - postgresql/blob - doc/src/sgml/ref/pg_ctl-ref.sgml
Add mention that pg_ctl will return an accurate exit code when waiting
[postgresql] / doc / src / sgml / ref / pg_ctl-ref.sgml
1 <!--
2 $PostgreSQL: pgsql/doc/src/sgml/ref/pg_ctl-ref.sgml,v 1.30 2004/12/22 02:17:15 momjian Exp $
3 PostgreSQL documentation
4 -->
5
6 <refentry id="app-pg-ctl">
7  <refmeta>
8   <refentrytitle id="app-pg-ctl-title"><application>pg_ctl</application></refentrytitle>
9   <manvolnum>1</manvolnum>
10   <refmiscinfo>Application</refmiscinfo>
11  </refmeta>
12
13  <refnamediv>
14   <refname>pg_ctl</refname>
15   <refpurpose>start, stop, or restart a <productname>PostgreSQL</productname> server</refpurpose>
16  </refnamediv>
17
18  <indexterm zone="app-pg-ctl">
19   <primary>pg_ctl</primary>
20  </indexterm>
21
22  <refsynopsisdiv>
23   <cmdsynopsis>
24    <command>pg_ctl</command>
25    <arg choice="plain">start</arg>
26    <arg>-w</arg>
27    <arg>-s</arg>
28    <arg>-D <replaceable>datadir</replaceable></arg>
29    <arg>-l <replaceable>filename</replaceable></arg>
30    <arg>-o <replaceable>options</replaceable></arg>
31    <arg>-p <replaceable>path</replaceable></arg>
32    <sbr>
33    <command>pg_ctl</command>
34    <arg choice="plain">stop</arg>
35    <arg>-W</arg>
36    <arg>-s</arg>
37    <arg>-D <replaceable>datadir</replaceable></arg>
38    <arg>-m
39      <group choice="plain">
40        <arg>s[mart]</arg>
41        <arg>f[ast]</arg>
42        <arg>i[mmediate]</arg>
43      </group>
44    </arg>
45    <sbr>
46    <command>pg_ctl</command>
47    <arg choice="plain">restart</arg>
48    <arg>-w</arg>
49    <arg>-s</arg>
50    <arg>-D <replaceable>datadir</replaceable></arg>
51    <arg>-m
52      <group choice="plain">
53        <arg>s[mart]</arg>
54        <arg>f[ast]</arg>
55        <arg>i[mmediate]</arg>
56      </group>
57    </arg>
58    <arg>-o <replaceable>options</replaceable></arg>
59    <sbr>
60    <command>pg_ctl</command>
61    <arg choice="plain">reload</arg>
62    <arg>-s</arg>
63    <arg>-D <replaceable>datadir</replaceable></arg>
64    <sbr>
65    <command>pg_ctl</command>
66    <arg choice="plain">status</arg>
67    <arg>-D <replaceable>datadir</replaceable></arg>
68    <sbr>
69    <command>pg_ctl</command>
70    <arg choice="plain">kill</arg>
71    <arg><replaceable>signal_name</replaceable></arg>
72    <arg><replaceable>process_id</replaceable></arg>
73   </cmdsynopsis>
74  </refsynopsisdiv>
75
76
77  <refsect1 id="app-pg-ctl-description">
78   <title>Description</title>
79   <para>
80    <application>pg_ctl</application> is a utility for starting,
81    stopping, or restarting the <productname>PostgreSQL</productname>
82    backend server (<xref linkend="app-postmaster">), or displaying the
83    status of a running server.  Although the server can be started
84    manually, <application>pg_ctl</application> encapsulates tasks such
85    as redirecting log output and properly detaching from the terminal
86    and process group. It also provides convenient options for
87    controlled shutdown.
88   </para>
89
90   <para>
91    In <option>start</option> mode, a new server is launched.  The
92    server is started in the background, and standard input is attached to
93    <filename>/dev/null</filename>.  The standard output and standard
94    error are either appended to a log file (if the <option>-l</option>
95    option is used), or redirected to <application>pg_ctl</application>'s 
96    standard output (not standard error).  If no log file is chosen, the 
97    standard output of <application>pg_ctl</application> should be redirected 
98    to a file or piped to another process such as a log rotating program
99    like <application>rotatelogs</>; otherwise the <command>postmaster</command> 
100    will write its output to the controlling terminal (from the background) 
101    and will not leave the shell's process group.
102   </para>
103
104   <para>
105    In <option>stop</option> mode, the server that is running in
106    the specified data directory is shut down.  Three different
107    shutdown methods can be selected with the <option>-m</option>
108    option: <quote>Smart</quote> mode waits for all the clients to
109    disconnect.  This is the default.  <quote>Fast</quote> mode does
110    not wait for clients to disconnect.  All active transactions are
111    rolled back and clients are forcibly disconnected, then the
112    server is shut down.  <quote>Immediate</quote> mode will abort
113    all server processes without a clean shutdown.  This will lead to 
114    a recovery run on restart.
115   </para>
116
117   <para>
118    <option>restart</option> mode effectively executes a stop followed
119    by a start.  This allows changing the <command>postmaster</command>
120    command-line options.
121   </para>
122
123   <para>
124    <option>reload</option> mode simply sends the
125    <command>postmaster</command> process a <systemitem>SIGHUP</>
126    signal, causing it to reread its configuration files
127    (<filename>postgresql.conf</filename>,
128    <filename>pg_hba.conf</filename>, etc.).  This allows changing of
129    configuration-file options that do not require a complete restart
130    to take effect.
131   </para>
132
133   <para>
134    <option>status</option> mode checks whether a server is running in
135    the specified data directory. If it is, the <acronym>PID</acronym>
136    and the command line options that were used to invoke it are
137    displayed.
138   </para>
139
140   <para>
141    <option>kill</option> mode allows you to send a signal to a specified
142     process.  This is particularly valuable for <productname>Microsoft Windows</>
143     which does not have a <application>kill</> command.  Use 
144     <literal>--help</> to see a list of supported signal names.
145   </para>
146  </refsect1>
147
148  <refsect1 id="app-pg-ctl-options">
149   <title>Options</title>
150
151   <para>
152
153     <variablelist>
154      <varlistentry>
155       <term><option>-D <replaceable class="parameter">datadir</replaceable></option></term>
156       <listitem>
157        <para>
158         Specifies the file system location of the database files.  If
159         this is omitted, the environment variable
160         <envar>PGDATA</envar> is used.
161        </para>
162       </listitem>
163      </varlistentry>
164
165      <varlistentry>
166       <term><option>-l <replaceable class="parameter">filename</replaceable></option></term>
167       <listitem>
168        <para>
169         Append the server log output to
170         <replaceable>filename</replaceable>.  If the file does not
171         exist, it is created.  The <systemitem>umask</> is set to 077, so access to
172         the log file from other users is disallowed by default.
173        </para>
174       </listitem>
175      </varlistentry>
176
177      <varlistentry>
178       <term><option>-m <replaceable class="parameter">mode</replaceable></option></term>
179       <listitem>
180        <para>
181         Specifies the shutdown mode.  <replaceable>mode</replaceable>
182         may be <literal>smart</literal>, <literal>fast</literal>, or
183         <literal>immediate</literal>, or the first letter of one of
184         these three.
185        </para>
186       </listitem>
187      </varlistentry>
188
189      <varlistentry>
190       <term><option>-o <replaceable class="parameter">options</replaceable></option></term>
191       <listitem>
192        <para>
193         Specifies options to be passed directly to the
194         <command>postmaster</command> command.
195        </para>
196        <para>
197         The options are usually surrounded by single or double
198         quotes to ensure that they are passed through as a group.
199        </para>
200       </listitem>
201      </varlistentry>
202
203      <varlistentry>
204       <term><option>-p <replaceable class="parameter">path</replaceable></option></term>
205       <listitem>
206        <para>
207         Specifies the location of the <filename>postmaster</filename>
208         executable.  By default the <filename>postmaster</filename> executable is taken from the same
209         directory as <command>pg_ctl</command>, or failing that, the hard-wired
210         installation directory.  It is not necessary to use this
211         option unless you are doing something unusual and get errors
212         that the <filename>postmaster</filename> executable was not found.
213        </para>
214       </listitem>
215      </varlistentry>
216
217      <varlistentry>
218       <term><option>-s</option></term>
219       <listitem>
220        <para>
221         Only print errors, no informational messages.
222        </para>
223       </listitem>
224      </varlistentry>
225
226      <varlistentry>
227       <term><option>-w</option></term>
228       <listitem>
229        <para>
230         Wait for the start or shutdown to complete.  Times out after
231         60 seconds.  This is the default for shutdowns. A successful 
232         shutdown is indicated by removal of the <acronym>PID</acronym> 
233         file. For starting up, a successful <command>psql -l</command> 
234         indicates success. <command>pg_ctl</command> will attempt to 
235         use the proper port for <application>psql</>. If the environment variable 
236         <envar>PGPORT</envar> exists, that is used. Otherwise, it will see if a port 
237         has been set in the <filename>postgresql.conf</filename> file. 
238         If neither of those is used, it will use the default port that 
239         <productname>PostgreSQL</productname> was compiled with 
240         (5432 by default). When waiting, <command>pg_ctl</command> will
241         return an accurate exit code based on the success of the startup 
242         or shutdown.
243        </para>
244       </listitem>
245      </varlistentry>
246
247      <varlistentry>
248       <term><option>-W</option></term>
249       <listitem>
250        <para>
251         Do not wait for start or shutdown to complete.  This is the
252         default for starts and restarts.
253        </para>
254       </listitem>
255      </varlistentry>
256     </variablelist>
257    </para>
258  </refsect1>
259
260
261  <refsect1>
262   <title>Environment</title>
263
264   <variablelist>
265    <varlistentry>
266     <term><envar>PGDATA</envar></term>
267
268     <listitem>
269      <para>
270       Default data directory location.
271      </para>
272     </listitem>
273    </varlistentry>
274
275    <varlistentry>
276     <term><envar>PGPORT</envar></term>
277
278     <listitem>
279      <para>
280       Default port for <xref linkend="app-psql"> (used by the -w option).
281      </para>
282     </listitem>
283    </varlistentry>
284   </variablelist>
285
286   <para>
287    For others, see <xref linkend="app-postmaster">.
288   </para>
289  </refsect1>
290
291
292  <refsect1>
293   <title>Files</title>
294
295   <variablelist>
296    <varlistentry>
297     <term><filename>postmaster.pid</filename></term>
298
299     <listitem>
300      <para>
301       The existence of this file in the data directory is used to help
302       <application>pg_ctl</application> determine if the server is
303       currently running or not.
304      </para>
305     </listitem>
306    </varlistentry>
307
308    <varlistentry>
309     <term><filename>postmaster.opts.default</filename></term>
310
311     <listitem>
312      <para>
313       If this file exists in the data directory,
314       <application>pg_ctl</application> (in <option>start</option>
315       mode) will pass the contents of the file as options to the
316       <command>postmaster</command> command, unless overridden by the
317       <option>-o</option> option.
318      </para>
319     </listitem>
320    </varlistentry>
321
322    <varlistentry>
323     <term><filename>postmaster.opts</filename></term>
324
325     <listitem>
326      <para>If this file exists in the data directory,
327       <application>pg_ctl</application> (in <option>restart</option> mode) 
328       will pass the contents of the file as options to the 
329       <application>postmaster</application>, unless overridden 
330       by the <option>-o</option> option. The contents of this file 
331       are also displayed in <option>status</option> mode.
332      </para>
333     </listitem>
334    </varlistentry>
335
336    <varlistentry>
337     <term><filename>postgresql.conf</filename></term>
338
339     <listitem>
340      <para>
341       This file, located in the data directory, is parsed to find the
342       proper port to use with <application>psql</application> when the
343       <option>-w</option> is given in <option>start</option> mode.
344      </para>
345     </listitem>
346    </varlistentry>
347
348   </variablelist>
349  </refsect1>
350
351
352  <refsect1>
353   <title>Notes</title>
354
355   <para>
356    Waiting for complete start is not a well-defined operation and may
357    fail if access control is set up so that a local client cannot
358    connect without manual interaction (e.g., password authentication).
359   </para>
360  </refsect1>
361
362
363  <refsect1 id="R1-APP-PGCTL-2">
364   <title>Examples</title>
365
366   <refsect2 id="R2-APP-PGCTL-3">
367    <title>Starting the Server</title>
368
369    <para>
370     To start up a server:
371 <screen>
372 <prompt>$</prompt> <userinput>pg_ctl start</userinput>
373 </screen>
374    </para>
375
376    <para>
377     An example of starting the server, blocking until the server has
378     come up is:
379 <screen>
380 <prompt>$</prompt> <userinput>pg_ctl -w start</userinput>
381 </screen>
382    </para>
383
384    <para>
385     For a server using port 5433, and
386     running without <function>fsync</function>, use:
387 <screen>
388 <prompt>$</prompt> <userinput>pg_ctl -o "-F -p 5433" start</userinput>
389 </screen>
390    </para>
391   </refsect2>
392
393   <refsect2 id="R2-APP-PGCTL-4">
394    <title>Stopping the Server</title>
395    <para>
396 <screen>
397 <prompt>$</prompt> <userinput>pg_ctl stop</userinput>
398 </screen>
399     stops the server. Using the <option>-m</option> switch allows one
400     to control <emphasis>how</emphasis> the backend shuts down.
401    </para>
402   </refsect2>
403
404   <refsect2 id="R2-APP-PGCTL-5">
405    <title>Restarting the Server</title>
406
407    <para>
408     Restarting the server is almost equivalent to stopping the
409     server and starting it again
410     except that <command>pg_ctl</command> saves and reuses the command line options that
411     were passed to the previously running instance.  To restart
412     the server in the simplest form, use:
413 <screen>
414 <prompt>$</prompt> <userinput>pg_ctl restart</userinput>
415 </screen>
416    </para>
417
418    <para>
419     To restart server,
420     waiting for it to shut down and to come up:
421 <screen>
422 <prompt>$</prompt> <userinput>pg_ctl -w restart</userinput>
423 </screen>
424    </para>
425
426    <para>
427     To restart using port 5433 and disabling <function>fsync</> after restarting:
428 <screen>
429 <prompt>$</prompt> <userinput>pg_ctl -o "-F -p 5433" restart</userinput>
430 </screen>
431    </para>
432   </refsect2>
433
434   <refsect2 id="R2-APP-PGCTL-6">
435    <title>Showing the Server Status</title>
436
437    <para>
438     Here is a sample status output from
439     <application>pg_ctl</application>:
440 <screen>
441 <prompt>$</prompt> <userinput>pg_ctl status</userinput>
442 <computeroutput>
443 pg_ctl: postmaster is running (pid: 13718)
444 Command line was:
445 /usr/local/pgsql/bin/postmaster '-D' '/usr/local/pgsql/data' '-p' '5433' '-B' '128'
446 </computeroutput>
447 </screen>
448     This is the command line that would be invoked in restart mode.
449    </para>
450   </refsect2>
451  </refsect1>
452
453
454  <refsect1>
455   <title>See Also</title>
456
457   <para>
458    <xref linkend="app-postmaster">
459   </para>
460  </refsect1>
461
462 </refentry>
463
464 <!-- Keep this comment at the end of the file
465 Local variables:
466 mode:sgml
467 sgml-omittag:nil
468 sgml-shorttag:t
469 sgml-minimize-attributes:nil
470 sgml-always-quote-attributes:t
471 sgml-indent-step:1
472 sgml-indent-data:t
473 sgml-parent-document:nil
474 sgml-default-dtd-file:"../reference.ced"
475 sgml-exposed-tags:nil
476 sgml-local-catalogs:("/usr/lib/sgml/catalog")
477 sgml-local-ecat-files:nil
478 End:
479 -->