pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。
pg_ctl — 启动、停止或重启 postmaster
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 status [-D datadir]
pg_ctl 是一个用于启动、 停止或重启 postmaster,即 PostgreSQL 后端服务器,或者显示 一个运行中 postmaster 的状态的工具。虽然 postmaster 可以手动 启动,但 pg_ctl 封装了诸如 重定向日志输出、恰当地从终端和进程组脱离这样的 任务,此外还为受控关闭 提供了一个选项。
在 start 模式中,会启动一个新的 postmaster。 服务器在后台启动,标准输入被连接到 /dev/null。标准输出和标准 错误要么被追加到一个日志文件(如果使用了 -l 选项),要么被重定向到 pg_ctl 的 标准输出(不是标准错误)。如果没有选择日志文件, pg_ctl 的标准输出应当被重定向 到一个文件或者通过管道传给另一个进程(例如一个日志轮转程序), 否则 postmaster 会把它的输出写到控制 终端(从后台)并且不会脱离 shell 的 进程组。
在 stop 模式中,运行在指定数据目录上的 postmaster 会被关闭。用 -m 选项可以选择三种不同的关闭方法:“智能”(Smart)模式等待所有客户端 断开连接。这是默认方式。“快速”(Fast)模式不 等待客户端断开连接。所有活动事务都将 被回滚。“立即”(Immediate)模式将在不做完整 关闭的情况下中止。这会导致重启时运行一次恢复。 默认情况下,stop 模式会等待关闭完成。
restart 模式实际上是先执行一次停止再执行一次 启动。这允许更改 postmaster 的命令行 选项。
status 模式检查是否有一个 postmaster 正在运行, 如果有就显示它的 PID 以及调用它时 所用的命令行选项。
datadir指定数据库文件的文件系统位置。如果 省略它,就使用环境变量 PGDATA。
filename把服务器日志输出追加到 filename。如果该文件不 存在,则创建它。umask 被设置为 077,因此默认情况下禁止其他用户 访问该日志文件。
mode指定关闭模式。mode 可以是 smart、fast 或 immediate,或者是这三者之一的首字母。
options指定被直接传递给 postmaster 的选项。
这些参数通常用单引号或双引号包围,以确保它们 作为一组被传递。
path指定 postmaster 可执行文件的位置。默认情况下,postmaster 取自与 pg_ctl 相同的目录,若失败则取写死的 安装目录。没有必要使用这个 选项,除非你在做某种不寻常的事情并且得到了找不到 postmaster 的错误。
等待启动或关闭完成。超时时间为 60 秒。这是关闭的默认方式。
不等待启动或关闭完成。这是 启动和重启的默认方式。
只打印错误,不打印信息性消息。
如果文件 postmaster.opts.default 存在于 数据目录中,该文件的内容将被作为 选项传递给 postmaster,除非被 -o 选项覆盖。
启动 postmaster:
$pg_ctl start
一个启动 postmaster 并阻塞到 postmaster 起来的例子是:
$pg_ctl -w start
对于一个使用端口 5433 并且 运行时不带 fsync 的 postmaster,使用:
$pg_ctl -o "-F -p 5433" start
$pg_ctl stop
停止 postmaster。使用 -m 开关可以 控制后端如何关闭。
这几乎等价于停止 postmaster 然后再启动它, 区别在于 pg_ctl 会保存并重用传递给先前运行实例的命令行选项。以最简单的形式重启 postmaster:
$pg_ctl restart
重启 postmaster 并 等待它关闭再起来:
$pg_ctl -w restart
重启时使用端口 5433 并在重启后禁用 fsync:
$pg_ctl -o "-F -p 5433" restart
下面是一段来自 pg_ctl 的状态输出示例:
$pg_ctl statuspg_ctl: postmaster is running (pid: 13718) Command line was: /usr/local/pgsql/bin/postmaster '-D' '/usr/local/pgsql/data' '-p' '5433' '-B' '128'
这是在 restart 模式中将会被调用的命令行。
等待完全启动不是一个定义良好的操作,如果访问控制以使本地客户端不手动交互就无法连接的方式设置, 它可能会失败。应当避免等待。
postmaster、PostgreSQL 管理员指南
译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。