2 $PostgreSQL: pgsql/doc/src/sgml/ref/pg_ctl-ref.sgml,v 1.34 2006/09/16 00:30:19 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>
18 <indexterm zone="app-pg-ctl">
19 <primary>pg_ctl</primary>
24 <command>pg_ctl</command>
25 <arg choice="plain">start</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>
33 <command>pg_ctl</command>
34 <arg choice="plain">stop</arg>
37 <arg>-D <replaceable>datadir</replaceable></arg>
39 <group choice="plain">
42 <arg>i[mmediate]</arg>
46 <command>pg_ctl</command>
47 <arg choice="plain">restart</arg>
50 <arg>-D <replaceable>datadir</replaceable></arg>
52 <group choice="plain">
55 <arg>i[mmediate]</arg>
58 <arg>-o <replaceable>options</replaceable></arg>
60 <command>pg_ctl</command>
61 <arg choice="plain">reload</arg>
63 <arg>-D <replaceable>datadir</replaceable></arg>
65 <command>pg_ctl</command>
66 <arg choice="plain">status</arg>
67 <arg>-D <replaceable>datadir</replaceable></arg>
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>
74 <command>pg_ctl</command>
75 <arg choice="plain">register</arg>
76 <arg>-N <replaceable>servicename</replaceable></arg>
77 <arg>-U <replaceable>username</replaceable></arg>
78 <arg>-P <replaceable>password</replaceable></arg>
79 <arg>-D <replaceable>datadir</replaceable></arg>
81 <arg>-o <replaceable>options</replaceable></arg>
83 <command>pg_ctl</command>
84 <arg choice="plain">unregister</arg>
85 <arg>-N <replaceable>servicename</replaceable></arg>
90 <refsect1 id="app-pg-ctl-description">
91 <title>Description</title>
93 <application>pg_ctl</application> is a utility for starting,
94 stopping, or restarting the <productname>PostgreSQL</productname>
95 backend server (<xref linkend="app-postgres">), or displaying the
96 status of a running server. Although the server can be started
97 manually, <application>pg_ctl</application> encapsulates tasks such
98 as redirecting log output and properly detaching from the terminal
99 and process group. It also provides convenient options for
104 In <option>start</option> mode, a new server is launched. The
105 server is started in the background, and standard input is attached to
106 <filename>/dev/null</filename>. The standard output and standard
107 error are either appended to a log file (if the <option>-l</option>
108 option is used), or redirected to <application>pg_ctl</application>'s
109 standard output (not standard error). If no log file is chosen, the
110 standard output of <application>pg_ctl</application> should be redirected
111 to a file or piped to another process such as a log rotating program
112 like <application>rotatelogs</>; otherwise <command>postgres</command>
113 will write its output to the controlling terminal (from the background)
114 and will not leave the shell's process group.
118 In <option>stop</option> mode, the server that is running in
119 the specified data directory is shut down. Three different
120 shutdown methods can be selected with the <option>-m</option>
121 option: <quote>Smart</quote> mode waits for all the clients to
122 disconnect. This is the default. <quote>Fast</quote> mode does
123 not wait for clients to disconnect. All active transactions are
124 rolled back and clients are forcibly disconnected, then the
125 server is shut down. <quote>Immediate</quote> mode will abort
126 all server processes without a clean shutdown. This will lead to
127 a recovery run on restart.
131 <option>restart</option> mode effectively executes a stop followed
132 by a start. This allows changing the <command>postgres</command>
133 command-line options.
137 <option>reload</option> mode simply sends the
138 <command>postgres</command> process a <systemitem>SIGHUP</>
139 signal, causing it to reread its configuration files
140 (<filename>postgresql.conf</filename>,
141 <filename>pg_hba.conf</filename>, etc.). This allows changing of
142 configuration-file options that do not require a complete restart
147 <option>status</option> mode checks whether a server is running in
148 the specified data directory. If it is, the <acronym>PID</acronym>
149 and the command line options that were used to invoke it are
154 <option>kill</option> mode allows you to send a signal to a specified
155 process. This is particularly valuable for <productname>Microsoft Windows</>
156 which does not have a <application>kill</> command. Use
157 <literal>--help</> to see a list of supported signal names.
161 <option>register</option> mode allows you to register a system service
162 on <productname>Microsoft Windows</>.
166 <option>unregister</option> mode allows you to unregister a system service
167 on <productname>Microsoft Windows</>, previously registered with the
168 <option>register</option> command.
172 <refsect1 id="app-pg-ctl-options">
173 <title>Options</title>
179 <term><option>-D <replaceable class="parameter">datadir</replaceable></option></term>
182 Specifies the file system location of the database files. If
183 this is omitted, the environment variable
184 <envar>PGDATA</envar> is used.
190 <term><option>-l <replaceable class="parameter">filename</replaceable></option></term>
193 Append the server log output to
194 <replaceable>filename</replaceable>. If the file does not
195 exist, it is created. The <systemitem>umask</> is set to 077, so access to
196 the log file from other users is disallowed by default.
202 <term><option>-m <replaceable class="parameter">mode</replaceable></option></term>
205 Specifies the shutdown mode. <replaceable>mode</replaceable>
206 may be <literal>smart</literal>, <literal>fast</literal>, or
207 <literal>immediate</literal>, or the first letter of one of
214 <term><option>-o <replaceable class="parameter">options</replaceable></option></term>
217 Specifies options to be passed directly to the
218 <command>postgres</command> command.
221 The options are usually surrounded by single or double
222 quotes to ensure that they are passed through as a group.
228 <term><option>-p <replaceable class="parameter">path</replaceable></option></term>
231 Specifies the location of the <filename>postgres</filename>
232 executable. By default the <filename>postgres</filename> executable is taken from the same
233 directory as <command>pg_ctl</command>, or failing that, the hard-wired
234 installation directory. It is not necessary to use this
235 option unless you are doing something unusual and get errors
236 that the <filename>postgres</filename> executable was not found.
242 <term><option>-s</option></term>
245 Only print errors, no informational messages.
251 <term><option>-w</option></term>
254 Wait for the start or shutdown to complete. Times out after
255 60 seconds. This is the default for shutdowns. A successful
256 shutdown is indicated by removal of the <acronym>PID</acronym>
257 file. For starting up, a successful <command>psql -l</command>
258 indicates success. <command>pg_ctl</command> will attempt to
259 use the proper port for <application>psql</>. If the environment variable
260 <envar>PGPORT</envar> exists, that is used. Otherwise, it will see if a port
261 has been set in the <filename>postgresql.conf</filename> file.
262 If neither of those is used, it will use the default port that
263 <productname>PostgreSQL</productname> was compiled with
264 (5432 by default). When waiting, <command>pg_ctl</command> will
265 return an accurate exit code based on the success of the startup
272 <term><option>-W</option></term>
275 Do not wait for start or shutdown to complete. This is the
276 default for starts and restarts.
284 <refsect1 id="app-pg-ctl-svcoptions">
285 <title>Windows options</title>
289 <term><option>-N <replaceable class="parameter">servicename</replaceable></option></term>
292 Name of the system service to register. The name will be used
293 as both the service name and the display name.
299 <term><option>-P <replaceable class="parameter">password</replaceable></option></term>
302 Password for the user to start the service.
308 <term><option>-U <replaceable class="parameter">username</replaceable></option></term>
311 User name for the user to start the service. For domain users, use the
312 format <literal>DOMAIN\username</literal>.
322 <title>Environment</title>
326 <term><envar>PGDATA</envar></term>
330 Default data directory location.
336 <term><envar>PGPORT</envar></term>
340 Default port for <xref linkend="app-psql"> (used by the -w option).
347 For others, see <xref linkend="app-postgres">.
357 <term><filename>postmaster.pid</filename></term>
361 The existence of this file in the data directory is used to help
362 <application>pg_ctl</application> determine if the server is
363 currently running or not.
369 <term><filename>postmaster.opts.default</filename></term>
373 If this file exists in the data directory,
374 <application>pg_ctl</application> (in <option>start</option>
375 mode) will pass the contents of the file as options to the
376 <command>postgres</command> command, unless overridden by the
377 <option>-o</option> option.
383 <term><filename>postmaster.opts</filename></term>
386 <para>If this file exists in the data directory,
387 <application>pg_ctl</application> (in <option>restart</option> mode)
388 will pass the contents of the file as options to
389 <application>postgres</application>, unless overridden
390 by the <option>-o</option> option. The contents of this file
391 are also displayed in <option>status</option> mode.
397 <term><filename>postgresql.conf</filename></term>
401 This file, located in the data directory, is parsed to find the
402 proper port to use with <application>psql</application> when the
403 <option>-w</option> is given in <option>start</option> mode.
416 Waiting for complete start is not a well-defined operation and may
417 fail if access control is set up so that a local client cannot
418 connect without manual interaction (e.g., password authentication).
423 <refsect1 id="R1-APP-PGCTL-2">
424 <title>Examples</title>
426 <refsect2 id="R2-APP-PGCTL-3">
427 <title>Starting the Server</title>
430 To start up a server:
432 <prompt>$</prompt> <userinput>pg_ctl start</userinput>
437 An example of starting the server, blocking until the server has
440 <prompt>$</prompt> <userinput>pg_ctl -w start</userinput>
445 For a server using port 5433, and
446 running without <function>fsync</function>, use:
448 <prompt>$</prompt> <userinput>pg_ctl -o "-F -p 5433" start</userinput>
453 <refsect2 id="R2-APP-PGCTL-4">
454 <title>Stopping the Server</title>
457 <prompt>$</prompt> <userinput>pg_ctl stop</userinput>
459 stops the server. Using the <option>-m</option> switch allows one
460 to control <emphasis>how</emphasis> the backend shuts down.
464 <refsect2 id="R2-APP-PGCTL-5">
465 <title>Restarting the Server</title>
468 Restarting the server is almost equivalent to stopping the
469 server and starting it again
470 except that <command>pg_ctl</command> saves and reuses the command line options that
471 were passed to the previously running instance. To restart
472 the server in the simplest form, use:
474 <prompt>$</prompt> <userinput>pg_ctl restart</userinput>
480 waiting for it to shut down and to come up:
482 <prompt>$</prompt> <userinput>pg_ctl -w restart</userinput>
487 To restart using port 5433 and disabling <function>fsync</> after restarting:
489 <prompt>$</prompt> <userinput>pg_ctl -o "-F -p 5433" restart</userinput>
494 <refsect2 id="R2-APP-PGCTL-6">
495 <title>Showing the Server Status</title>
498 Here is a sample status output from
499 <application>pg_ctl</application>:
501 <prompt>$</prompt> <userinput>pg_ctl status</userinput>
503 pg_ctl: server is running (pid: 13718)
505 /usr/local/pgsql/bin/postgres '-D' '/usr/local/pgsql/data' '-p' '5433' '-B' '128'
508 This is the command line that would be invoked in restart mode.
515 <title>See Also</title>
518 <xref linkend="app-postgres">