Manpages

NAME

pg_ctl - 启 动 , 停 止 和 重 启 PostgreSQL 服 务 器

SYNOPSIS

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 ]

DESCRIPTION 描 述

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 和 调 用 它 的 命 令 行 选 项 。

OPTIONS 选 项

-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 秒 后 超 时 。 这 个 参 数 是 关 闭 时 的 缺 省 值 。 成 功 的 关 闭 是 以 删 除 PID 文 件 为 标 志 的 。 对 于 启 动 而 言 , 一 次 成 功 的 psql -l 就 标 志 着 成 功 。 pg_ctl 将 视 图 使 用 对 psql 合 适 的 端 口 , 如 果 存 在 环 境 变 量 PGPORT, 那 么 用 它 。 否 则 , 它 将 查 找 看 看 在 postgresql.conf 文 件 里 面 是 否 设 置 了 一 个 端 口 。 如 果 都 没 有 , 它 将 使 用 PostgreSQL 编 译 时 的 缺 省 端 口 ( 缺 省 是 5432) 。

-W 不 等 待 启 动 或 者 停 止 的 完 成 。 这 是 启 动 和 重 起 的 缺 省 。

ENVIRONMENT 环 境

PGDATA 缺 省 数 据 目 录 位 置

PGPORT

psql(1) 的 缺 省 端 口 ( 由 -w 选 项 使 用 ) 。 其 它 的 环 境 变 量 , 参 阅 postmaster(1).

FILES 文 件

postmaster.pid 这 个 文 件 存 在 于 数 据 目 录 中 是 为 了 帮 助 pg_ctl 判 断 服 务 器 当 前 是 否 在 运 行 。
postmaster.opts.default
如 果 这 个 文 件 存 在 于 数 据 目 录 , pg_ctl( 在 start 模 式 下 ) 将 把 文 件 地 内 容 当 作 传 递 给 postmaster 命 令 的 选 项 传 递 过 去 , 除 非 被 -o 选 项 覆 盖 。
postmaster.opts
如 果 这 个 文 件 存 在 于 数 据 目 录 , pg_ctl( 在 start 模 式 下 ) 将 把 文 件 地 内 容 当 作 传 递 给 postmaster 命 令 的 选 项 传 递 过 去 , 除 非 被 -o 选 项 覆 盖 。 这 个 文 件 的 内 容 也 会 在 status 模 式 里 显 示 出 来 。
postgresql.conf
这 个 文 件 在 数 据 目 录 中 , 会 分 析 它 以 查 找 和 psql 一 起 用 的 合 适 的 端 口 ( 在 start 模 式 里 给 出 -w 的 时 候 。 )

NOTES 注 意

等 待 完 全 启 动 还 不 是 一 个 定 义 得 很 完 整 的 操 作 , 如 果 访 问 控 制 设 置 为 本 地 客 户 端 在 没 有 手 工 交 互 的 情 况 下 不 能 访 问 的 话 还 可 能 会 失 效 。 ( 比 如 , 口 令 认 证 ) 。

EXAMPLES 例 子

STARTING THE SERVER 启 动 服 务 器 启 动 服 务 器 :

$ pg_ctl start 启 动 服 务 器 的 一 个 例 子 , 等 到 服 务 器 启 动 了 才 退 出 :

$ pg_ctl -w start 用 于 一 个 postmaster 使 用 端 口 5433, 而 且 不 带 fsync 运 行 , 使 用 :

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

STOPPING THE SERVER 停 止 服 务 器
$ pg_ctl stop 停 止 服 务 器 , 使 用 -m 开 关 允 许 我 们 控 制 如 何 把 后 端 停 下 来 。 -w等 待 服 务 器 停 止 。 -m 声 明 后 端 的 停 止 模 式 。

RESTARTING THE SERVER 重 起 服 务 器 这 个 命 令 几 乎 等 于 先 停 止 postmaster 然 后 再 启 动 她 , 只 不 过 pg_ctl 保 存 并 重 新 使 用 上 一 次 运 行 postmaster 的 命 令 行 参 数 。 重 起 服 务 器 的 最 简 单 的 方 法 是 :

$ pg_ctl restart 重 起 服 务 器 , 等 待 其 停 止 和 重 起 :

$ pg_ctl -w restart 使 用 5433 重 起 并 且 重 起 后 关 闭 fsync:

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

SHOWING THE SERVER STATUS 显 示 服 务 器 状 态 下 面 是 来 自 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’ 这 是 在 重 起 模 式 里 使 用 的 命 令 行 。

SEE ALSO 参 见

postmaster(1)

译 者

Postgresql 中 文 网 站 何 伟 平 <laser [AT] pgsqldb.org>

本 页 面 中 文 版 由 中 文 man 手 册 页 计 划 提 供 。 中 文 man 手 册 页 计 划 : https://github.com/man-pages-zh/manpages-zh