pg_ctl -- Starts, stops, and restarts postmaster
pg_ctl [-w] [-D datadir ][-p path ] [-o "options "] start
pg_ctl [-w] [-D datadir ] [-m [s[mart]|f[ast]|i[mmediate]]] stop
pg_ctl [-w] [-D datadir ] [-m [s[mart]|f[ast]|i[mmediate]] [-o "options "] restart
pg_ctl [-D datadir ] status
The parameters are usually surrounded by single or double quotes to ensure that they are passed through as a group.
pg_ctl is a utility for starting, stopping or restarting postmaster.
To start up postmaster:
$ pg_ctl start
If -w is supplied, pg_ctl waits for the database server to come up,
by watching for creation of the pid file (PGDATA/postmaster.pid),
for up to 60 seconds.
Parameters to invoke postmaster are taken from the following sources:
Note that postmaster.opts.default is installed by initdb from lib/postmaster.opts.default.sample under the Postgres installation directory (lib/postmaster.opts.default.sample is copied from src/bin/pg_ctl/postmaster.opts.default.sample while installing Postgres).
To override the default parameters you can use -D, -p and -o options.
An example of starting the postmaster, blocking until postmaster comes up is:
$ pg_ctl -w start
To specify the postmaster binary path, try:
$ pg_ctl -p /usr/local/pgsql/bin/postmaster start
For a postmaster using port 5433, and running without fsync, use:
$ pg_ctl -o "-o -F -p 5433" start
$ pg_ctl stop stops postmaster. Using the -m switch allows one to control how the backend shuts down. -w waits for postmaster to shut down. -m specifies the shut down mode.
This is almost equivalent to stopping the postmaster then starting it again except that the parameters used before stopping it would be used too. This is done by saving them in $PGDATA/postmaster.opts file. -w, -D, -m, -fast, -immediate and -o can also be used in the restarting mode and they have the same meanings as described above.
To restart postmaster in the simplest form:
$ pg_ctl restart
To restart postmaster, waiting for it to shut down and to come up:
$ pg_ctl -w restart
To restart using port 5433 and disabling fsync after restarting:
$ pg_ctl -o "-o -F -p 5433" restart
To get status information from postmaster:
$ pg_ctl status
Here is a sample output from pg_ctl:
pg_ctl: postmaster is running (pid: 13718)
options are:
/usr/local/src/pgsql/current/bin/postmaster
-p 5433
-D /usr/local/src/pgsql/current/data
-B 64
-b /usr/local/src/pgsql/current/bin/postgres
-N 32
-o '-F'