↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
历史版本PostgreSQL 7.3 已于 2007 年 11 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

pg_ctl

pg_ctl — 启动、停止或重启一个 PostgreSQL 服务器

大纲

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 是一个用于启动、 停止或重启 postmaster,即 PostgreSQL 后端服务器,或者显示 一个运行中 postmaster 的状态的工具。虽然 postmaster 可以手动 启动,但 pg_ctl 封装了诸如 重定向日志输出、恰当地从终端和进程组脱离这样的 任务,并且它为受控关闭提供了方便的选项。

在 start 模式中,会启动一个新的 postmaster。 服务器在后台启动,标准输入被连接到 /dev/null。标准输出和标准 错误要么被追加到一个日志文件(如果使用了 -l 选项),要么被重定向到 pg_ctl 的 标准输出(不是标准错误)。如果没有选择日志文件, pg_ctl 的标准输出应当被重定向 到一个文件或者通过管道传给另一个进程(例如一个日志轮转程序), 否则 postmaster 会把它的输出写到控制 终端(从后台)并且不会脱离 shell 的 进程组。

在 stop 模式中,运行在指定数据目录中的 postmaster 会被关闭。用 -m 选项可以选择三种不同的关闭方法:“智能”(Smart)模式等待所有客户端 断开连接。这是默认方式。“快速”(Fast)模式不 等待客户端断开连接。所有活动事务都会被 回滚并且客户端被强制断开连接,然后 数据库被关闭。“立即”(Immediate)模式将在不做干净关闭的情况下中止 所有服务器进程。这会导致 重启时运行一次恢复。

restart 模式实际上是先执行一次停止再执行一次 启动。这允许更改 postmaster 的命令行 选项。

reload 模式只是向 postmaster 发送一个 SIGHUP 信号, 使它重新读取它的配置文件 (postgresql.conf、pg_hba.conf、 等)。这允许更改那些不需要 完全重启就能生效的配置文件选项。

status 模式检查是否有一个 postmaster 正在运行, 如果有就显示它的 PID 以及调用它时 所用的命令行选项。

选项

-D datadir

指定数据库文件的文件系统位置。如果 省略它,就使用环境变量 PGDATA。

-l filename

把服务器日志输出追加到 filename。如果该文件不 存在,则创建它。umask 被设置为 077,因此默认情况下禁止其他用户 访问该日志文件。

-m mode

指定关闭模式。mode 可以是 smart、fast 或 immediate,或者是这三者之一的首字母。

-o options

指定被直接传递给 postmaster 的选项。

这些参数通常用单引号或双引号包围,以确保它们 作为一组被传递。

-p path

指定 postmaster 可执行文件的位置。默认情况下,postmaster 取自与 pg_ctl 相同的目录,若失败则取写死的 安装目录。没有必要使用这个 选项,除非你在做某种不寻常的事情并且得到了找不到 postmaster 的错误。

-s

只打印错误,不打印信息性消息。

-w

等待启动或关闭完成。超时时间为 60 秒。这是关闭的默认方式。

-W

不等待启动或关闭完成。这是 启动和重启的默认方式。

环境

PGDATA

默认数据方向(direction)位置

其他环境变量见 postmaster。

文件

如果文件 postmaster.opts.default 存在于 数据目录中,该文件的内容将被作为 选项传递给 postmaster,除非被 -o 选项覆盖。

注意

等待完全启动不是一个定义良好的操作,如果访问控制的设置使得本地客户端不手动交互就无法连接, 它可能会失败。应当避免等待。

示例

启动 postmaster

启动一个 postmaster:

$ pg_ctl start

一个启动 postmaster 并阻塞到 postmaster 起来的例子是:

$ pg_ctl -w start

对于一个使用端口 5433 并且 运行时不带 fsync 的 postmaster,使用:

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

停止 postmaster

$ pg_ctl stop

停止 postmaster。使用 -m 开关可以 控制后端如何关闭。

重启 postmaster

这几乎等价于停止 postmaster 然后再启动它, 区别在于 pg_ctl 会保存并重用传递给先前运行实例的命令行选项。以最简单的形式重启 postmaster:

$ pg_ctl restart

重启 postmaster 并 等待它关闭再起来:

$ pg_ctl -w restart

重启时使用端口 5433 并在重启后禁用 fsync:

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

显示 postmaster 状态

下面是一段来自 pg_ctl 的状态输出示例:

$ pg_ctl status
pg_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 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。