?
本文檔使用 PHP中文網(wǎng)手冊 發(fā)布
pg_ctl init[db] [-s] [-D datadir] [-o options]
pg_ctl start [-w] [-t seconds] [-s] [-D datadir] [-l filename] [-o options] [-p path] [-c]
pg_ctl stop [-W] [-t seconds] [-s] [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ]
pg_ctl restart [-w] [-t seconds] [-s] [-D datadir] [-c] [-m s[mart] | f[ast] | i[mmediate] ] [-o options]
pg_ctl reload [-s] [-D datadir]
pg_ctl status [-D datadir]
pg_ctl kill [signal_name] [process_id]
pg_ctl register [-N servicename] [-U username] [-P password] [-D datadir] [-w] [-t seconds] [-o options]
pg_ctl unregister [-N servicename]
pg_ctl 是一個實用程序,它初始化PostgreSQL 數(shù)據(jù)庫集群,啟動、終止或者重啟PostgreSQL后臺服務(wù)器 (postgres),或顯示一個正在運行的服務(wù)器的狀態(tài)。盡管服務(wù)器不能 手動啟動,pg_ctl封裝任務(wù),如:重定向日志輸出以及從終端和過程組 恰當拆分。它也為受控關(guān)閉提供了便捷選項。
init或者initdb模式創(chuàng)建了一個新的 PostgreSQL數(shù)據(jù)庫集群。一個數(shù)據(jù)庫集群式一組由單一服務(wù)器實例管理 的數(shù)據(jù)庫的集合。該模式調(diào)用initdb命令。參閱 initdb獲取詳細信息。
在start模式中,一個新服務(wù)器被啟動。該服務(wù)器在后臺啟動,而標準輸出 被連接到/dev/null(或者在Windows中是nul)。 在類Unix系統(tǒng)中,默認情況下,服務(wù)器的標準輸出和標準錯誤被發(fā)送到pg_ctl 的標準輸出中(而不是標準錯誤)。pg_ctl然后應(yīng)該 被重定向到一個文件或輸送到另一個進程(例如像rotatelogs的日志旋轉(zhuǎn)程序); 否則,postgres會將輸出寫到控制終端(從后臺),并且不離開shell的過程組。 在Windows中,缺省時服務(wù)器的標準輸出和標準錯誤會被發(fā)送到終端??梢酝ㄟ^使用-l 附加服務(wù)器輸出到日志文件來改變這些默認行為。
在stop模式中,在特定數(shù)據(jù)目錄下運行的服務(wù)器是關(guān)閉的。三種不同的關(guān)閉方法 可以用-m選擇:"Smart"模式等待在線備份模式完成并斷開所有的 客戶端連接。這是默認的。如果服務(wù)器是在恢復(fù),一旦所有客戶端斷開了那么恢復(fù)和流式復(fù)制將會中斷。 "Fast"模式不等待客戶端斷開連接并將終止一個進行中的在線備份?;貪L所有活動事務(wù) 并強制斷開客戶端連接,然后服務(wù)器就會關(guān)閉。"Immediate"模式將會在不完全關(guān)閉的情況下 中止所有服務(wù)器進程。這會導(dǎo)致在重啟時運行一個恢復(fù)。
restart實際上是先執(zhí)行一個停止,然后緊跟一個啟動。它允許變換 postgres的命令行選項。
reload模式簡單地給postgres發(fā)送一個 SIGHUP信號,導(dǎo)致它重新讀取配置文件 (postgresql.conf,pg_hba.conf等), 這樣就允許修改配置文件選項而不用重啟系統(tǒng)即可生效。
status模式監(jiān)查一個服務(wù)器是否在指定的數(shù)據(jù)目錄運行,如果是, 那么顯示其PID和調(diào)用它的命令行選項。
kill模式允許你給一個指定的進程發(fā)送信號。這個功能對 Microsoft Windows特別有用,因為它沒有kill 命令。使用--help查看支持的信號名字列表。
register mode 模式允許你在Microsoft Windows上注冊一個系統(tǒng)服務(wù)。
unregister模式允許你在Microsoft Windows上刪除先前用 register命令注冊的系統(tǒng)服務(wù)。
通過提高強加于服務(wù)器的任何軟資源限制,嘗試允許服務(wù)器故障在其可用的平臺上產(chǎn)生核心文件。 這在調(diào)試和診斷問題方面也是有效的,通過允許從一個失敗的服務(wù)器進程獲得一個堆棧跟蹤。
聲明該數(shù)據(jù)庫的文件系統(tǒng)位置。如果忽略則使用PGDATA環(huán)境變量。
把服務(wù)器日志輸出附加在filename文件上。如果該文件不存在則創(chuàng)建它。 umask設(shè)置為 077 ,因此缺省時是不允許從其它用戶向日志文件訪問的。
Specifies the shutdown mode. mode can be smart, fast, or immediate, or the first letter of one of these three. 聲明關(guān)閉模式。mode可以是 smart,fast,immediate之一, 或者是這三個的首字母之一。
聲明要直接傳遞給postgres的選項。
參數(shù)通常都用單或者雙引號包圍以保證它們作為一個整體傳遞。
指定postgres可執(zhí)行文件的位置。缺省時postgres 可執(zhí)行文件來自和pg_ctl一樣的相同目錄,或者如果該目錄失敗,則是 硬連線安裝目錄。不必使用該選項,除非你在做一些不同尋常的操作或者得到postgres 執(zhí)行文件找不到的錯誤。
在init模式中,該選項類似地指定initdb 可執(zhí)行文件的位置。
只打印錯誤,而不打印提示性信息。
等待啟動或者關(guān)機完成的等待秒數(shù)。
等待啟動或者關(guān)閉的完成(60 秒超時),這個參數(shù)是關(guān)閉時的缺省值。成功的關(guān)閉是以刪除 PID文件為標志的。對于啟動而言,一次成功的psql -l 就標志著成功。pg_ctl將企圖使用對psql合適的端口, 如果存在PGPORT環(huán)境變量,那么將用它。否則,它將查找在 postgresql.conf文件里是否設(shè)置了一個端口。如果都沒有,它將使用 PostgreSQL編譯時的缺省端口(缺省 5432)。在等待的時候, pg_ctl將根據(jù)啟動或者關(guān)閉的成功狀況返回一個準確的退出代碼。
不等待啟動或者停止的完成。這是啟動和重啟的缺省。
要注冊的系統(tǒng)服務(wù)的名字。這個名字將用于服務(wù)名和顯示名。
用戶啟動服務(wù)的口令
用于啟動服務(wù)的用戶的用戶名。對于域用戶,使用DOMAIN\username格式。
缺省數(shù)據(jù)目錄位置
默認的主機名或者psql的unix域套接字的位置(-w選項所使用的)。
psql的默認端口號(psql選項所使用的)。
對于額外的服務(wù)器變量,請參閱postgres。該實用程序,跟大部分其他 PostgreSQL實用程序一樣,也是用libpq支持的環(huán)境變量。 (請參閱Section 31.13)。
這個文件存在于數(shù)據(jù)目錄中是為了幫助pg_ctl判斷服務(wù)器當前是否在運行。
如果這個文件存在于數(shù)據(jù)目錄,pg_ctl(在restart 模式下)將把文件地內(nèi)容當作傳遞給postgres命令的選項傳遞過去, 除非被-o選項覆蓋。這個文件的內(nèi)容也會在status模式里顯示出來。
這個文件在數(shù)據(jù)目錄中,會分析它以查找和psql一起用的合適的端口 (在start模式里給出-w的時候)。
等待完整的啟動并不是一個定義明確的操作,并且如果訪問控制已設(shè)置可能或失敗, 因此一個本地客戶端不能在沒有手動交互時連接(例如:密碼身份認證)。 對于額外的連接變量,請參閱Section 31.13,并且對于秘密, 也參閱Section 31.14。
啟動服務(wù)器:
$ pg_ctl start
啟動服務(wù)器的一個例子,等到服務(wù)器啟動了才退出:
$ pg_ctl -w start
服務(wù)器使用5433端口,而且不帶fsync
運行,使用:
$ pg_ctl -o "-F -p 5433" start
$ pg_ctl stop
使用-m選項停止服務(wù)器允許用戶控制如何關(guān)閉后端。
這個命令幾乎等于先停止服務(wù)器然后再啟動它,只不過pg_ctl保存并重新 使用上一次運行服務(wù)器的命令行參數(shù)。重啟服務(wù)器的最簡單的方法是:
$ pg_ctl restart
重啟服務(wù)器,等待其停止和重啟:
$ pg_ctl -w restart
使用 5433 端口重啟并且重啟后關(guān)閉fsync
:
$ pg_ctl -o "-F -p 5433" restart
下面是來自pg_ctl的狀態(tài)輸出的例子:
$ pg_ctl status pg_ctl: server is running (pid: 13718) Command line was: /usr/local/pgsql/bin/postgres '-D' '/usr/local/pgsql/data' '-p' '5433' '-B' '128'
這就是在 restart 模式中被調(diào)用的命令行。