1PG_CTL(1) PostgreSQL 15.4 Documentation PG_CTL(1)
2
3
4
6 pg_ctl - initialize, start, stop, or control a PostgreSQL server
7
9 pg_ctl init[db] [-D datadir] [-s] [-o initdb-options]
10
11 pg_ctl start [-D datadir] [-l filename] [-W] [-t seconds] [-s]
12 [-o options] [-p path] [-c]
13
14 pg_ctl stop [-D datadir] [-m s[mart] | f[ast] | i[mmediate]] [-W]
15 [-t seconds] [-s]
16
17 pg_ctl restart [-D datadir] [-m s[mart] | f[ast] | i[mmediate]] [-W]
18 [-t seconds] [-s] [-o options] [-c]
19
20 pg_ctl reload [-D datadir] [-s]
21
22 pg_ctl status [-D datadir]
23
24 pg_ctl promote [-D datadir] [-W] [-t seconds] [-s]
25
26 pg_ctl logrotate [-D datadir] [-s]
27
28 pg_ctl kill signal_name process_id
29
30 On Microsoft Windows, also:
31
32 pg_ctl register [-D datadir] [-N servicename] [-U username]
33 [-P password] [-S a[uto] | d[emand]] [-e source] [-W]
34 [-t seconds] [-s] [-o options]
35
36 pg_ctl unregister [-N servicename]
37
39 pg_ctl is a utility for initializing a PostgreSQL database cluster,
40 starting, stopping, or restarting the PostgreSQL database server
41 (postgres(1)), or displaying the status of a running server. Although
42 the 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
45 shutdown.
46
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(1) for
50 details.
51
52 start mode launches a new server. The server is started in the
53 background, and its standard input is attached to /dev/null (or nul on
54 Windows). On Unix-like systems, by default, the server's standard
55 output and standard error are sent to pg_ctl's standard output (not
56 standard error). The standard output of pg_ctl should then be
57 redirected to a file or piped to another process such as a log rotating
58 program like rotatelogs; otherwise postgres will write its output to
59 the controlling terminal (from the background) and will not leave the
60 shell's process group. On Windows, by default the server's standard
61 output and standard error are sent to the terminal. These default
62 behaviors can be changed by using -l to append the server's output to a
63 log file. Use of either -l or output redirection is recommended.
64
65 stop mode shuts down the server that is running in the specified data
66 directory. Three different shutdown methods can be selected with the -m
67 option. “Smart” mode disallows new connections, then waits for all
68 existing clients to disconnect. If the server is in hot standby,
69 recovery and streaming replication will be terminated once all clients
70 have disconnected. “Fast” mode (the default) does not wait for clients
71 to disconnect. All active transactions are rolled back and clients are
72 forcibly disconnected, then the server is shut down. “Immediate” mode
73 will abort all server processes immediately, without a clean shutdown.
74 This choice will lead to a crash-recovery cycle during the next server
75 start.
76
77 restart mode effectively executes a stop followed by a start. This
78 allows changing the postgres command-line options, or changing
79 configuration-file options that cannot be changed without restarting
80 the server. If relative paths were used on the command line during
81 server start, restart might fail unless pg_ctl is executed in the same
82 current directory as it was during server start.
83
84 reload mode simply sends the postgres server process a SIGHUP signal,
85 causing it to reread its configuration files (postgresql.conf,
86 pg_hba.conf, etc.). This allows changing configuration-file options
87 that do not require a full server restart to take effect.
88
89 status mode checks whether a server is running in the specified data
90 directory. If it is, the server's PID and the command line options that
91 were used to invoke it are displayed. If the server is not running,
92 pg_ctl returns an exit status of 3. If an accessible data directory is
93 not specified, pg_ctl returns an exit status of 4.
94
95 promote mode commands the standby server that is running in the
96 specified data directory to end standby mode and begin read-write
97 operations.
98
99 logrotate mode rotates the server log file. For details on how to use
100 this mode with external log rotation tools, see Section 25.3.
101
102 kill mode sends a signal to a specified process. This is primarily
103 valuable on Microsoft Windows which does not have a built-in kill
104 command. Use --help to see a list of supported signal names.
105
106 register mode registers the PostgreSQL server as a system service on
107 Microsoft Windows. The -S option allows selection of service start
108 type, either “auto” (start service automatically on system startup) or
109 “demand” (start service on demand).
110
111 unregister mode unregisters a system service on Microsoft Windows. This
112 undoes the effects of the register command.
113
115 -c
116 --core-files
117 Attempt to allow server crashes to produce core files, on platforms
118 where this is possible, by lifting any soft resource limit placed
119 on core files. This is useful in debugging or diagnosing problems
120 by allowing a stack trace to be obtained from a failed server
121 process.
122
123 -D datadir
124 --pgdata=datadir
125 Specifies the file system location of the database configuration
126 files. If this option is omitted, the environment variable PGDATA
127 is used.
128
129 -l filename
130 --log=filename
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 log
133 file is disallowed to other users by default.
134
135 -m mode
136 --mode=mode
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.
140
141 -o options
142 --options=options
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.
146
147 The options should usually be surrounded by single or double quotes
148 to ensure that they are passed through as a group.
149
150 -o initdb-options
151 --options=initdb-options
152 Specifies options to be passed directly to the initdb command. -o
153 can be specified multiple times, with all the given options being
154 passed through.
155
156 The initdb-options should usually be surrounded by single or double
157 quotes to ensure that they are passed through as a group.
158
159 -p path
160 Specifies the location of the postgres executable. By default the
161 postgres executable is taken from the same directory as pg_ctl, or
162 failing that, the hard-wired installation directory. It is not
163 necessary to use this option unless you are doing something unusual
164 and get errors that the postgres executable was not found.
165
166 In init mode, this option analogously specifies the location of the
167 initdb executable.
168
169 -s
170 --silent
171 Print only errors, no informational messages.
172
173 -t seconds
174 --timeout=seconds
175 Specifies the maximum number of seconds to wait when waiting for an
176 operation to complete (see option -w). Defaults to the value of the
177 PGCTLTIMEOUT environment variable or, if not set, to 60 seconds.
178
179 -V
180 --version
181 Print the pg_ctl version and exit.
182
183 -w
184 --wait
185 Wait for the operation to complete. This is supported for the modes
186 start, stop, restart, promote, and register, and is the default for
187 those modes.
188
189 When waiting, pg_ctl repeatedly checks the server's PID file,
190 sleeping for a short amount of time between checks. Startup is
191 considered complete when the PID file indicates that the server is
192 ready to accept connections. Shutdown is considered complete when
193 the server removes the PID file. pg_ctl returns an exit code based
194 on the success of the startup or shutdown.
195
196 If the operation does not complete within the timeout (see option
197 -t), then pg_ctl exits with a nonzero exit status. But note that
198 the operation might continue in the background and eventually
199 succeed.
200
201 -W
202 --no-wait
203 Do not wait for the operation to complete. This is the opposite of
204 the option -w.
205
206 If waiting is disabled, the requested action is triggered, but
207 there is no feedback about its success. In that case, the server
208 log file or an external monitoring system would have to be used to
209 check the progress and success of the operation.
210
211 In prior releases of PostgreSQL, this was the default except for
212 the stop mode.
213
214 -?
215 --help
216 Show help about pg_ctl command line arguments, and exit.
217
218 If an option is specified that is valid, but not relevant to the
219 selected operating mode, pg_ctl ignores it.
220
221 Options for Windows
222 -e source
223 Name of the event source for pg_ctl to use for logging to the event
224 log when running as a Windows service. The default is PostgreSQL.
225 Note that this only controls messages sent from pg_ctl itself; once
226 started, the server will use the event source specified by its
227 event_source parameter. Should the server fail very early in
228 startup, before that parameter has been set, it might also log
229 using the default event source name PostgreSQL.
230
231 -N servicename
232 Name of the system service to register. This name will be used as
233 both the service name and the display name. The default is
234 PostgreSQL.
235
236 -P password
237 Password for the user to run the service as.
238
239 -S start-type
240 Start type of the system service. start-type can be auto, or
241 demand, or the first letter of one of these two. If this option is
242 omitted, auto is the default.
243
244 -U username
245 User name for the user to run the service as. For domain users, use
246 the format DOMAIN\username.
247
249 PGCTLTIMEOUT
250 Default limit on the number of seconds to wait when waiting for
251 startup or shutdown to complete. If not set, the default is 60
252 seconds.
253
254 PGDATA
255 Default data directory location.
256
257 Most pg_ctl modes require knowing the data directory location;
258 therefore, the -D option is required unless PGDATA is set.
259
260 pg_ctl, like most other PostgreSQL utilities, also uses the environment
261 variables supported by libpq (see Section 34.15).
262
263 For additional variables that affect the server, see postgres(1).
264
266 postmaster.pid
267 pg_ctl examines this file in the data directory to determine
268 whether the server is currently running.
269
270 postmaster.opts
271 If this file exists in the data directory, pg_ctl (in restart mode)
272 will pass the contents of the file as options to postgres, unless
273 overridden by the -o option. The contents of this file are also
274 displayed in status mode.
275
277 Starting the Server
278 To start the server, waiting until the server is accepting connections:
279
280 $ pg_ctl start
281
282 To start the server using port 5433, and running without fsync, use:
283
284 $ pg_ctl -o "-F -p 5433" start
285
286 Stopping the Server
287 To stop the server, use:
288
289 $ pg_ctl stop
290
291 The -m option allows control over how the server shuts down:
292
293 $ pg_ctl stop -m smart
294
295 Restarting the Server
296 Restarting the server is almost equivalent to stopping the server and
297 starting it again, except that by default, pg_ctl saves and reuses the
298 command line options that were passed to the previously-running
299 instance. To restart the server using the same options as before, use:
300
301 $ pg_ctl restart
302
303 But if -o is specified, that replaces any previous options. To restart
304 using port 5433, disabling fsync upon restart:
305
306 $ pg_ctl -o "-F -p 5433" restart
307
308 Showing the Server Status
309 Here is sample status output from pg_ctl:
310
311 $ pg_ctl status
312
313 pg_ctl: server is running (PID: 13718)
314 /usr/local/pgsql/bin/postgres "-D" "/usr/local/pgsql/data" "-p" "5433" "-B" "128"
315
316 The second line is the command that would be invoked in restart mode.
317
319 initdb(1), postgres(1)
320
321
322
323PostgreSQL 15.4 2023 PG_CTL(1)