缺省時 postmaster 是從和pg_ctl相同的目錄取出,如果不是, 那麼就是寫死的安裝目錄。除非你想干點什麼特別的事情,並且得到類似沒有找到 postmaster這樣的錯誤, 否則沒有必要使用這個選項。
-s
只打印錯誤,而不打印提示性信息。
-w
等 待啟動或者關閉的完成。在 60 秒後超時。 這個參數是關閉時的缺省值。 成功的關閉是以刪除 PID 文件為標志的。對於啟動而言, 一次成功的 psql -l 就標志著成功。 pg_ctl 將視圖使用對 psql 合適的端口,如果存在環境變量 PGPORT,那麼用它。 否則,它將查找看看在 postgresql.conf 文件裡面是否設置了一個端口。 如果都沒有,它將使用 PostgreSQL 編譯時的缺省端口(缺省是 5432)。 在等待的時候,pg_ctl 將根據啟動或者關閉的成功狀況返回一個准確的退出代碼。
-W
不等待啟動或者停止的完成。這是啟動和重起的缺省。
環境
PGDATA
缺省數據目錄位置
PGPORT
psql 的缺省端口(由 -w 選項使用)。
其它的環境變量,參閱 postmaster。
文件
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 的時候。)
如果在數據目錄裡存在 postmaster.opts.default 文件,那麼該文件將作為選項傳遞給 postmaster, 除非被 -o 選項覆蓋。
注意
等待完全啟動還不是一個定義得很完整的操作, 如果訪問控制設置為本地客戶端在沒有手工交互的情況下不能訪問的話還可能會失效。(比如,口令認證)。
例子
啟動服務器
$ pg_ctl start
啟動服務器的一個例子, 等到服務器 啟動了才退出:
$ pg_ctl -w start
用於一個 postmaster 使用端口 5433,而且不帶 fsync 運行,使用:
$ pg_ctl -o "-F -p 5433" start
停止服務器
$ pg_ctl stop
停止服務器,使用 -m 開關允許我們控制如何把後端停下來。 -w等待服務器停止。-m 聲明後端的停止模式。
重起服務器
這個命令幾乎等於先停止 postmaster 然後再啟動她,只不過pg_ctl保存並重新使用上一次運行 postmaster 的命令行參數。重起服務器的最簡單的方法是:
$ pg_ctl restart
重起服務器,等待其停止和重起:
$ pg_ctl -w restart
使用 5433 重起並且重起後關閉 fsync:
$ pg_ctl -o "-F -p 5433" restart
顯示服務器狀態
下面是來自 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''
這是在重起模式裡使用的命令行