pg_ctl

pg_ctl —初始化,启动,停止或控制 PostgreSQL 服务器

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 seconds ] [ -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 kill signal_name process_id

在 Microsoft Windows 上,也:

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

pg_ctl unregister [ -N servicename ]

Description

pg_ctl 是用于初始化 PostgreSQL 数据库集群,启动,停止或重新启动 PostgreSQL 数据库服务器(postgres)或显示正在运行的服务器状态的 Util。尽管可以手动启动服务器,但是 pg_ctl 封装了诸如重定向日志输出以及与终端和进程组正确分离之类的任务。它还提供了方便的选项以实现受控关机。

initinitdb模式创建一个新的 PostgreSQL 数据库集群,即将由单个服务器实例 Management 的数据库的集合。此模式调用initdb命令。有关详情,请参见initdb

start模式启动新服务器。服务器在后台启动,其标准 Importing 附加到/dev/null(或 Windows 上的nul)。在类 Unix 系统上,默认情况下,服务器的标准输出和标准错误被发送到 pg_ctl 的标准输出(不是标准错误)。然后应将 pg_ctl 的标准输出重定向到文件或通过管道传输到另一个进程,例如日志旋转程序(如 rotatelogs);否则postgres将其输出(从后台)写入控制终端,并且不会离开 Shell 的进程组。在 Windows 上,默认情况下,服务器的标准输出和标准错误会发送到终端。可以使用-l更改这些默认行为,以将服务器的输出附加到日志文件中。建议使用-l或输出重定向。

stop模式将关闭在指定数据目录中运行的服务器。 -m选项可以选择三种不同的关闭方法。 “智能”模式将 await 所有活动 Client 端断开连接并 await 任何在线备份完成。如果服务器处于热备用状态,则所有 Client 端断开连接后,恢复和流式复制将终止。 “快速”模式(默认)不 awaitClient 端断开连接,并且将终止正在进行的联机备份。将回滚所有活动的事务,并强制断开 Client 端的连接,然后关闭服务器。 “立即”模式将立即中止所有服务器进程,而不进行彻底关机。此选择将导致下次服务器启动期间的崩溃恢复周期。

restart模式有效地执行停止,然后再开始。这允许更改postgres命令行选项,或更改配置文件选项,这些选项必须重新启动服务器才能更改。如果在服务器启动期间在命令行上使用了相对路径,则restart可能会失败,除非在与服务器启动期间相同的当前目录中执行 pg_ctl。

reload模式只是向postgres服务器进程发送 SIGHUPsignal,从而使其重新读取其配置文件(postgresql.confpg_hba.conf等)。这允许更改不需要完全重新启动服务器即可生效的配置文件选项。

status模式检查服务器是否在指定的数据目录中运行。如果是,则显示服务器的 PID 和用于调用它的命令行选项。如果服务器未运行,则 pg_ctl 的退出状态为 3.如果未指定可访问数据目录,则 pg_ctl 的退出状态为 4.

promote模式命令在指定数据目录中运行的备用服务器结束备用模式并开始读写操作。

kill模式将 signal 发送到指定的进程。这在没有内置 kill 命令的 Microsoft Windows 上主要很有价值。使用--help查看支持的 signal 名称的列表。

register模式将 PostgreSQL 服务器注册为 Microsoft Windows 上的系统服务。 -S选项允许选择服务启动类型,“自动”(系统启动时自动启动服务)或“需求”(按需启动服务)。

unregister模式在 Microsoft Windows 上注销系统服务。这会撤消register命令的影响。

Options

init模式下,该选项类似地指定initdb可执行文件的位置。

await 时,pg_ctl反复检查服务器的 PID 文件,在两次检查之间睡眠一小段时间。当 PID 文件指示服务器已准备好接受连接时,启动被视为完成。当服务器删除 PID 文件时,关闭被视为完成。 pg_ctl根据启动或关闭的成功返回退出代码。

如果操作未在超时时间内完成(请参阅选项-t),则pg_ctl以非零退出状态退出。但是请注意,该操作可能会在后台 continue 进行并最终成功。

如果禁用了 await,则会触发请求的操作,但是不会收到有关其成功的反馈。在这种情况下,必须使用服务器日志文件或外部监视系统来检查操作的进度和成功性。

在 PostgreSQL 的早期版本中,这是默认值,但stop模式除外。

如果指定了一个有效但与所选操作模式无关的选项,则 pg_ctl 将忽略它。

Windows 的选项

Environment

大多数pg_ctl模式要求知道数据目录的位置。因此,除非设置了PGDATA,否则-D选项是必需的。

像大多数其他 PostgreSQLUtil 一样,pg_ctl也使用 libpq 支持的环境变量(请参见Section 33.14)。

有关影响服务器的其他变量,请参见postgres

Files

Examples

启动服务器

要启动服务器,请 await 服务器接受连接:

$ pg_ctl start

要使用端口 5433 启动服务器并在不使用fsync的情况下运行,请使用:

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

停止服务器

要停止服务器,请使用:

$ pg_ctl stop

-m选项允许控制服务器的关闭方式:

$ pg_ctl stop -m smart

重新启动服务器

重新启动服务器几乎等同于停止服务器并重新启动它,除了默认情况下,pg_ctl保存并重复使用传递给先前运行实例的命令行选项。要使用与以前相同的选项重新启动服务器,请使用:

$ pg_ctl restart

但是,如果指定了-o,它将替换以前的所有选项。要使用端口 5433 重新启动,请在重新启动时禁用fsync

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

显示服务器状态

这是 pg_ctl 输出的 samples 状态:

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

第二行是将在重新启动模式下调用的命令。

See Also

initdb, postgres

上一章 首页 下一章