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 参 见
译 者
Postgresql 中 文 网 站 何 伟 平 <laser [AT] pgsqldb.org>
跋
本 页 面 中 文 版 由 中 文 man 手 册 页 计 划 提 供 。 中 文 man 手 册 页 计 划 : https://github.com/man-pages-zh/manpages-zh