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