Provided by: manpages-zh_1.6.4.0-1_all
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@pgsqldb.org>
跋
本頁面中文版由中文 man 手冊頁計劃提供。 中文 man 手冊頁計劃:https://github.com/man-pages-zh/manpages-zh