4 pg_ctl — initialize, start, stop, or control a PostgreSQL server
8 pg_ctl init[db] [-D datadir] [-s] [-o initdb-options]
10 pg_ctl start [-D datadir] [-l filename] [-W] [-t seconds] [-s] [-o
11 options] [-p path] [-c]
13 pg_ctl stop [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ] [-W] [-t
16 pg_ctl restart [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ] [-W]
17 [-t seconds] [-s] [-o options] [-c]
19 pg_ctl reload [-D datadir] [-s]
21 pg_ctl status [-D datadir]
23 pg_ctl promote [-D datadir] [-W] [-t seconds] [-s]
25 pg_ctl logrotate [-D datadir] [-s]
27 pg_ctl kill signal_name process_id
29 On Microsoft Windows, also:
31 pg_ctl register [-D datadir] [-N servicename] [-U username] [-P
32 password] [-S a[uto] | d[emand] ] [-e source] [-W] [-t seconds] [-s]
35 pg_ctl unregister [-N servicename]
39 pg_ctl is a utility for initializing a PostgreSQL database cluster,
40 starting, stopping, or restarting the PostgreSQL database server
41 (postgres), or displaying the status of a running server. Although the
42 server can be started manually, pg_ctl encapsulates tasks such as
43 redirecting log output and properly detaching from the terminal and
44 process group. It also provides convenient options for controlled
47 The init or initdb mode creates a new PostgreSQL database cluster, that
48 is, a collection of databases that will be managed by a single server
49 instance. This mode invokes the initdb command. See initdb for details.
51 start mode launches a new server. The server is started in the
52 background, and its standard input is attached to /dev/null (or nul on
53 Windows). On Unix-like systems, by default, the server's standard
54 output and standard error are sent to pg_ctl's standard output (not
55 standard error). The standard output of pg_ctl should then be
56 redirected to a file or piped to another process such as a log rotating
57 program like rotatelogs; otherwise postgres will write its output to
58 the controlling terminal (from the background) and will not leave the
59 shell's process group. On Windows, by default the server's standard
60 output and standard error are sent to the terminal. These default
61 behaviors can be changed by using -l to append the server's output to a
62 log file. Use of either -l or output redirection is recommended.
64 stop mode shuts down the server that is running in the specified data
65 directory. Three different shutdown methods can be selected with the -m
66 option. “Smart” mode disallows new connections, then waits for all
67 existing clients to disconnect. If the server is in hot standby,
68 recovery and streaming replication will be terminated once all clients
69 have disconnected. “Fast” mode (the default) does not wait for clients
70 to disconnect. All active transactions are rolled back and clients are
71 forcibly disconnected, then the server is shut down. “Immediate” mode
72 will abort all server processes immediately, without a clean shutdown.
73 This choice will lead to a crash-recovery cycle during the next server
76 restart mode effectively executes a stop followed by a start. This
77 allows changing the postgres command-line options, or changing
78 configuration-file options that cannot be changed without restarting
79 the server. If relative paths were used on the command line during
80 server start, restart might fail unless pg_ctl is executed in the same
81 current directory as it was during server start.
83 reload mode simply sends the postgres server process a SIGHUP signal,
84 causing it to reread its configuration files (postgresql.conf,
85 pg_hba.conf, etc.). This allows changing configuration-file options
86 that do not require a full server restart to take effect.
88 status mode checks whether a server is running in the specified data
89 directory. If it is, the server's PID and the command line options that
90 were used to invoke it are displayed. If the server is not running,
91 pg_ctl returns an exit status of 3. If an accessible data directory is
92 not specified, pg_ctl returns an exit status of 4.
94 promote mode commands the standby server that is running in the
95 specified data directory to end standby mode and begin read-write
98 logrotate mode rotates the server log file. For details on how to use
99 this mode with external log rotation tools, see Section 24.3.
101 kill mode sends a signal to a specified process. This is primarily
102 valuable on Microsoft Windows which does not have a built-in kill
103 command. Use --help to see a list of supported signal names.
105 register mode registers the PostgreSQL server as a system service on
106 Microsoft Windows. The -S option allows selection of service start
107 type, either “auto” (start service automatically on system startup) or
108 “demand” (start service on demand).
110 unregister mode unregisters a system service on Microsoft Windows. This
111 undoes the effects of the register command.
117 Attempt to allow server crashes to produce core files, on
118 platforms where this is possible, by lifting any soft resource
119 limit placed on core files. This is useful in debugging or
120 diagnosing problems by allowing a stack trace to be obtained
121 from a failed server process.
125 Specifies the file system location of the database configuration
126 files. If this option is omitted, the environment variable
131 Append the server log output to filename. If the file does not
132 exist, it is created. The umask is set to 077, so access to the
133 log file is disallowed to other users by default.
137 Specifies the shutdown mode. mode can be smart, fast, or
138 immediate, or the first letter of one of these three. If this
139 option is omitted, fast is the default.
143 Specifies options to be passed directly to the postgres command.
144 -o can be specified multiple times, with all the given options
145 being passed through.
147 The options should usually be surrounded by single or double
148 quotes to ensure that they are passed through as a group.
151 --options=initdb-options
152 Specifies options to be passed directly to the initdb command.
153 -o can be specified multiple times, with all the given options
154 being passed through.
156 The initdb-options should usually be surrounded by single or
157 double quotes to ensure that they are passed through as a group.
160 Specifies the location of the postgres executable. By default
161 the postgres executable is taken from the same directory as
162 pg_ctl, or failing that, the hard-wired installation directory.
163 It is not necessary to use this option unless you are doing
164 something unusual and get errors that the postgres executable
167 In init mode, this option analogously specifies the location of
168 the initdb executable.
172 Print only errors, no informational messages.
176 Specifies the maximum number of seconds to wait when waiting for
177 an operation to complete (see option -w). Defaults to the value
178 of the PGCTLTIMEOUT environment variable or, if not set, to 60
183 Print the pg_ctl version and exit.
187 Wait for the operation to complete. This is supported for the
188 modes start, stop, restart, promote, and register, and is the
189 default for those modes.
191 When waiting, pg_ctl repeatedly checks the server's PID file,
192 sleeping for a short amount of time between checks. Startup is
193 considered complete when the PID file indicates that the server
194 is ready to accept connections. Shutdown is considered complete
195 when the server removes the PID file. pg_ctl returns an exit
196 code based on the success of the startup or shutdown.
198 If the operation does not complete within the timeout (see
199 option -t), then pg_ctl exits with a nonzero exit status. But
200 note that the operation might continue in the background and
205 Do not wait for the operation to complete. This is the opposite
208 If waiting is disabled, the requested action is triggered, but
209 there is no feedback about its success. In that case, the server
210 log file or an external monitoring system would have to be used
211 to check the progress and success of the operation.
213 In prior releases of PostgreSQL, this was the default except for
218 Show help about pg_ctl command line arguments, and exit.
220 If an option is specified that is valid, but not relevant to the
221 selected operating mode, pg_ctl ignores it.
226 Name of the event source for pg_ctl to use for logging to the
227 event log when running as a Windows service. The default is
228 PostgreSQL. Note that this only controls messages sent from
229 pg_ctl itself; once started, the server will use the event
230 source specified by its event_source parameter. Should the
231 server fail very early in startup, before that parameter has
232 been set, it might also log using the default event source name
236 Name of the system service to register. This name will be used
237 as both the service name and the display name. The default is
241 Password for the user to run the service as.
244 Start type of the system service. start-type can be auto, or
245 demand, or the first letter of one of these two. If this option
246 is omitted, auto is the default.
249 User name for the user to run the service as. For domain users,
250 use the format DOMAIN\username.
255 Default limit on the number of seconds to wait when waiting for
256 startup or shutdown to complete. If not set, the default is 60
260 Default data directory location.
262 Most pg_ctl modes require knowing the data directory location;
263 therefore, the -D option is required unless PGDATA is set.
265 For additional variables that affect the server, see postgres.
270 pg_ctl examines this file in the data directory to determine
271 whether the server is currently running.
274 If this file exists in the data directory, pg_ctl (in restart
275 mode) will pass the contents of the file as options to postgres,
276 unless overridden by the -o option. The contents of this file
277 are also displayed in status mode.
283 To start the server, waiting until the server is accepting connections:
286 To start the server using port 5433, and running without fsync, use:
287 $ pg_ctl -o "-F -p 5433" start
291 To stop the server, use:
294 The -m option allows control over how the server shuts down:
295 $ pg_ctl stop -m smart
297 Restarting the Server
299 Restarting the server is almost equivalent to stopping the server and
300 starting it again, except that by default, pg_ctl saves and reuses the
301 command line options that were passed to the previously-running
302 instance. To restart the server using the same options as before, use:
305 But if -o is specified, that replaces any previous options. To restart
306 using port 5433, disabling fsync upon restart:
307 $ pg_ctl -o "-F -p 5433" restart
309 Showing the Server Status
311 Here is sample status output from pg_ctl:
314 pg_ctl: server is running (PID: 13718)
315 /usr/local/pgsql/bin/postgres "-D" "/usr/local/pgsql/data" "-p" "5433" "-B" "128
318 The second line is the command that would be invoked in restart mode.