Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
PG_CTL(1)		  PostgreSQL 18.6 Documentation 	       PG_CTL(1)

NAME
     pg_ctl - initialize, start, stop, or control a PostgreSQL server

SYNOPSIS
     pg_ctl init[db] [-D datadir] [-s] [-o initdb-options]

     pg_ctl start [-D datadir] [-l filename] [-W] [-t seconds] [-s] [-o options]
	    [-p path] [-c]

     pg_ctl  stop [-D datadir] [-m s[mart] | f[ast] | i[mmediate]] [-W] [-t sec-
	    onds] [-s]

     pg_ctl  restart   [-D datadir]   [-m s[mart] | f[ast] | i[mmediate]]   [-W]
	    [-t seconds] [-s] [-o options] [-c]

     pg_ctl reload [-D datadir] [-s]

     pg_ctl status [-D datadir]

     pg_ctl promote [-D datadir] [-W] [-t seconds] [-s]

     pg_ctl logrotate [-D datadir] [-s]

     pg_ctl kill signal_name process_id

     On Microsoft Windows, also:

     pg_ctl  register  [-D datadir] [-N servicename] [-U username] [-P password]
	    [-S a[uto] | d[emand]] [-e source] [-W]  [-t seconds]  [-s]  [-o op-
	    tions]

     pg_ctl unregister [-N servicename]

DESCRIPTION
     pg_ctl  is a utility for initializing a PostgreSQL database cluster, start-
     ing, stopping, or restarting the PostgreSQL database server  (postgres(1)),
     or  displaying  the  status of a running server. Although the server can be
     started manually, pg_ctl encapsulates tasks such as redirecting log  output
     and  properly  detaching  from the terminal and process group. It also pro-
     vides convenient options for controlled shutdown.

     The init or initdb mode creates a new PostgreSQL database cluster, that is,
     a collection of databases that will be managed by a single server instance.
     This mode invokes the initdb command. See initdb(1) for details.

     start mode launches a new server. The server is started in the  background,
     and  its  standard  input	is attached to /dev/null (or nul on Windows). On
     Unix-like systems, by default, the server's standard  output  and	standard
     error  are sent to pg_ctl's standard output (not standard error). The stan-
     dard output of pg_ctl should then be redirected to a file or piped  to  an-
     other  process  such  as  a log rotating program like rotatelogs; otherwise
     postgres will write its output to the controlling terminal (from the  back-
     ground)  and  will  not leave the shell's process group. On Windows, by de-
     fault the server's standard output and standard error are sent to the  ter-
     minal.  These  default  behaviors	can be changed by using -l to append the
     server's output to a log file. Use of either -l or  output  redirection  is
     recommended.

     stop  mode  shuts down the server that is running in the specified data di-
     rectory. Three different shutdown methods can be selected with the  -m  op-
     tion.   "Smart" mode disallows new connections, then waits for all existing
     clients to disconnect. If the  server  is	in  hot  standby,  recovery  and
     streaming	replication  will  be  terminated  once all clients have discon-
     nected.  "Fast" mode (the default) does not wait for clients to disconnect.
     All active transactions are rolled back and clients  are  forcibly  discon-
     nected,  then  the  server  is  shut down.  "Immediate" mode will abort all
     server processes immediately, without a clean shutdown.  This  choice  will
     lead to a crash-recovery cycle during the next server start.

     restart  mode  effectively executes a stop followed by a start. This allows
     changing the postgres command-line options, or changing  configuration-file
     options  that  cannot be changed without restarting the server. If relative
     paths were used on the command line during server start, restart might fail
     unless pg_ctl is executed in the same current directory as  it  was  during
     server start.

     reload mode simply sends the postgres server process a SIGHUP signal, caus-
     ing  it  to  reread  its configuration files (postgresql.conf, pg_hba.conf,
     etc.). This allows changing configuration-file options that do not  require
     a full server restart to take effect.

     status mode checks whether a server is running in the specified data direc-
     tory.  If	it  is,  the server's PID and the command line options that were
     used to invoke it are displayed. If the server is not running,  pg_ctl  re-
     turns  an	exit  status of 3. If an accessible data directory is not speci-
     fied, pg_ctl returns an exit status of 4.

     promote mode commands the standby server that is running in  the  specified
     data directory to end standby mode and begin read-write operations.

     logrotate	mode rotates the server log file. For details on how to use this
     mode with external log rotation tools, see Section 24.3.

     kill mode sends a signal to a specified process. This is primarily valuable
     on Microsoft Windows which does not  have	a  built-in  kill  command.  Use
     --help to see a list of supported signal names.

     register  mode  registers	the PostgreSQL server as a system service on Mi-
     crosoft Windows. The -S option allows selection of service start type,  ei-
     ther  "auto"  (start  service  automatically on system startup) or "demand"
     (start service on demand).

     unregister mode unregisters a system service on Microsoft Windows. This un-
     does the effects of the register command.

OPTIONS
     -c
     --core-files
	 Attempt to allow server crashes to produce  core  files,  on  platforms
	 where	this  is  possible, by lifting any soft resource limit placed on
	 core files. This is useful in debugging or diagnosing problems  by  al-
	 lowing a stack trace to be obtained from a failed server process.

     -D datadir
     --pgdata=datadir
	 Specifies the file system location of the database configuration files.
	 If this option is omitted, the environment variable PGDATA is used.

     -l filename
     --log=filename
	 Append  the  server log output to filename. If the file does not exist,
	 it is created. By default, only the cluster owner can	access	the  log
	 file.	If  group  access  is  enabled in the cluster, users in the same
	 group as the cluster owner can also read it.

     -m mode
     --mode=mode
	 Specifies the shutdown mode.  mode can be smart, fast, or immediate, or
	 the first letter of one of these three. If this option is omitted, fast
	 is the default.

     -o options
     --options=options
	 Specifies options to be passed directly to the  postgres  command.   -o
	 can  be  specified  multiple  times,  with  all the given options being
	 passed through.

	 The options should usually be surrounded by single or double quotes  to
	 ensure that they are passed through as a group.

     -o initdb-options
     --options=initdb-options
	 Specifies  options to be passed directly to the initdb command.  -o can
	 be specified multiple times, with all the given  options  being  passed
	 through.

	 The  initdb-options  should  usually  be surrounded by single or double
	 quotes to ensure that they are passed through as a group.

     -p path
	 Specifies the location of the postgres executable. By default the post-
	 gres executable is taken from the same directory as pg_ctl, or  failing
	 that, the hard-wired installation directory. It is not necessary to use
	 this  option unless you are doing something unusual and get errors that
	 the postgres executable was not found.

	 In init mode, this option analogously specifies  the  location  of  the
	 initdb executable.

     -s
     --silent
	 Print only errors, no informational messages.

     -t seconds
     --timeout=seconds
	 Specifies the maximum number of seconds to wait when waiting for an op-
	 eration  to  complete	(see  option  -w).  Defaults to the value of the
	 PGCTLTIMEOUT environment variable or, if not set, to 60 seconds.

     -V
     --version
	 Print the pg_ctl version and exit.

     -w
     --wait
	 Wait for the operation to complete. This is  supported  for  the  modes
	 start,  stop,	restart,  promote,  and register, and is the default for
	 those modes.

	 When waiting, pg_ctl repeatedly checks the server's PID file,	sleeping
	 for  a  short amount of time between checks. Startup is considered com-
	 plete when the PID file indicates that the server is  ready  to  accept
	 connections.  Shutdown  is  considered complete when the server removes
	 the PID file.	pg_ctl returns an exit code based on the success of  the
	 startup or shutdown.

	 If  the operation does not complete within the timeout (see option -t),
	 then pg_ctl exits with a nonzero exit status. But note that the  opera-
	 tion might continue in the background and eventually succeed.

     -W
     --no-wait
	 Do  not wait for the operation to complete. This is the opposite of the
	 option -w.

	 If waiting is disabled, the requested action is triggered, but there is
	 no feedback about its success. In that case, the server log file or  an
	 external  monitoring system would have to be used to check the progress
	 and success of the operation.

	 In prior releases of PostgreSQL, this was the default	except	for  the
	 stop mode.

     -?
     --help
	 Show help about pg_ctl command line arguments, and exit.

     If  an  option is specified that is valid, but not relevant to the selected
     operating mode, pg_ctl ignores it.

   Options for Windows
     -e source
	 Name of the event source for pg_ctl to use for logging to the event log
	 when running as a Windows service. The default is PostgreSQL. Note that
	 this only controls messages sent from pg_ctl itself; once started,  the
	 server  will use the event source specified by its event_source parame-
	 ter. Should the server fail very early in startup, before that  parame-
	 ter has been set, it might also log using the default event source name
	 PostgreSQL.

     -N servicename
	 Name  of the system service to register. This name will be used as both
	 the service name and the display name. The default is PostgreSQL.

     -P password
	 Password for the user to run the service as.

     -S start-type
	 Start type of the system service.  start-type can be auto,  or  demand,
	 or  the  first  letter  of one of these two. If this option is omitted,
	 auto is the default.

     -U username
	 User name for the user to run the service as. For domain users, use the
	 format DOMAIN\username.

ENVIRONMENT
     PGCTLTIMEOUT
	 Default limit on the number of seconds to wait when waiting for startup
	 or shutdown to complete. If not set, the default is 60 seconds.

     PGDATA
	 Default data directory location.

     Most pg_ctl modes require knowing the data directory  location;  therefore,
     the -D option is required unless PGDATA is set.

     For additional variables that affect the server, see postgres(1).

FILES
     postmaster.pid
	 pg_ctl  examines  this  file in the data directory to determine whether
	 the server is currently running.

     postmaster.opts
	 If this file exists in the data directory,  pg_ctl  (in  restart  mode)
	 will pass the contents of the file as options to postgres, unless over-
	 ridden  by  the -o option. The contents of this file are also displayed
	 in status mode.

EXAMPLES
   Starting the Server
     To start the server, waiting until the server is accepting connections:

	 $ pg_ctl start

     To start the server using port 5433, and running without fsync, use:

	 $ pg_ctl -o "-F -p 5433" start

   Stopping the Server
     To stop the server, use:

	 $ pg_ctl stop

     The -m option allows control over how the server shuts down:

	 $ pg_ctl stop -m smart

   Restarting the Server
     Restarting the server is almost  equivalent  to  stopping	the  server  and
     starting it again, except that by default, pg_ctl saves and reuses the com-
     mand  line  options that were passed to the previously-running instance. To
     restart the server using the same options as before, use:

	 $ pg_ctl restart

     But if -o is specified, that replaces any previous options. To restart  us-
     ing port 5433, disabling fsync upon restart:

	 $ pg_ctl -o "-F -p 5433" restart

   Showing the Server Status
     Here is sample status output from pg_ctl:

	 $ pg_ctl status

	 pg_ctl: server is running (PID: 13718)
	 /usr/local/pgsql/bin/postgres "-D" "/usr/local/pgsql/data" "-p" "5433" "-B" "128"

     The second line is the command that would be invoked in restart mode.

SEE ALSO
     initdb(1), postgres(1)

PostgreSQL 18.6 		      2026			       PG_CTL(1)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=pg_ctl&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help