pg_ctl start [-w] [-s] [-D datadir] [-l filename] [-o options] [-p path]
pg_ctl stop [-W] [-s] [-D datadir] [-m
s[mart] | f[ast] | i[mmediate]
]
pg_ctl restart [-w] [-s] [-D datadir] [-m
s[mart] | f[ast] | i[mmediate]
] [-o options]
pg_ctl reload [-s] [-D datadir]
pg_ctl status [-D datadir]
pg_ctl 是一个用于启动,停止, 或者重起 PostgreSQL 后端服务器(postmaster), 或者显示一个运行着的服务器的状态的工具, 尽管我们可以手动启动服务器,但是 pg_ctl 封装了重新定向日志输出, 与终端和进程组合理分离,以及另外提供了一个选项用于有控制的关闭。
在 start 模式里会启动一个新的服务器。 服务器是在后台启动的,标准输入被附着到了 /dev/null 上。如果使用了 -l,那么标准输出和标准错误被定向到一个日志文件, 要么就是重新定向到 pg_ctl 的标准输出(而不是标准错误)。 如果没有选定日志文件,pg_ctl 的标准输出应该重新定向到一个文件或者用管道输出到另外一个进程, 比如那些日志旋转程序,否则,postmaster 将把它的输出写到控制终端(在后台)并且将不会脱离 shell 的进程组。
在 stop 模式下,那个正在特定数据目录运行的服务器被关闭。 你可以用 -m 选项选择三种不同的关闭模式:"Smart" 模式等待所有客户端中断联接。 这个是缺省。"Fast" 模式并不等待客户端中断联接。 所有活跃事务都被回卷并且客户端都强制断开。 "Immediate" 模式将在没有干净关闭的情况下退出。这么做将导致在重新启动的时候的恢复。
restart 实际上是先执行一个停止,然后紧跟一个启动。它允许变换postmaster命令行的选项。
reload 模式简单地给postmaster发送一个 SIGHUP 信号,导致它重新读取她的配置文件 (postgresql.conf,pg_hba.conf 等等) 这样就允许修改配置文件选项而不用完全重启系统来使之生效。
status 模式监查一个服务器是否在指定的数据目录运行, 如果是,那么显示其 PID 和调用它的命令行选项。
声明该数据库文件的文件系统位置。 如果忽略这个选项,使用环境变量 PGDATA。
把服务器日志输出附加在 filename 文件上。 如果该文件不存在,那么创建它。umask设置为 077, 因此缺省时是不允许从其它用户向日志文件访问的。
声明关闭模式。mode 可以是smart, fast, 或者 immediate,或者是这三个之一的第一个字母。
声明要直接传递给postmaster 的选项。
参数通常都用单或者双引号包围以保证它们作为一个整体传递。
声明 postmaster 可执行文件的位置。 缺省时 postmaster 是从和pg_ctl相同的目录取出,如果不是, 那么就是写死的安装目录。除非你想干点什么特别的事情,并且得到类似没有找到 postmaster这样的错误, 否则没有必要使用这个选项。
只打印错误,而不打印提示性信息。
等待启动或者关闭的完成。在 60 秒后超时。 这个参数是关闭时的缺省值。 成功的关闭是以删除 PID 文件为标志的。对于启动而言, 一次成功的 psql -l 就标志着成功。 pg_ctl 将视图使用对 psql 合适的端口,如果存在环境变量 PGPORT,那么用它。 否则,它将查找看看在 postgresql.conf 文件里面是否设置了一个端口。 如果都没有,它将使用 PostgreSQL 编译时的缺省端口(缺省是 5432)。
不等待启动或者停止的完成。这是启动和重起的缺省。
这个文件存在于数据目录中是为了帮助 pg_ctl 判断服务器当前是否在运行。
如果这个文件存在于数据目录,pg_ctl(在 start 模式下)将把文件地内容当作传递给 postmaster 命令的选项传递过去,除非被 -o 选项覆盖。
如果这个文件存在于数据目录,pg_ctl(在start 模式下) 将把文件地内容当作传递给postmaster 命令的选项传递过去, 除非被 -o 选项覆盖。这个文件的内容也会在 status 模式里显示出来。
这个文件在数据目录中,会分析它以查找和 psql 一起用的合适的端口(在 start 模式里给出 -w 的时候。)
如果在数据目录里存在 postmaster.opts.default 文件,那么该文件将作为选项传递给 postmaster, 除非被 -o 选项覆盖。
启动服务器:
$ pg_ctl start
启动服务器的一个例子, 等到服务器 启动了才退出:
$ pg_ctl -w start
用于一个 postmaster 使用端口 5433,而且不带 fsync 运行,使用:
$ pg_ctl -o "-F -p 5433" start