POSTGRES(1) | PostgreSQL Server Applications | POSTGRES(1) |
postgres - 以單使用者模式執行一個 PostgreSQL伺服器
postgres [ -A 0 | 1 ] [ -B nbuffers ] [ -c name=value ] [ -d debug-level ] [ --describe-config ] [ -D datadir ] [ -e ] [ -E ] [ -f s | i | t | n | m | h ] [ -F ] [ -N ] [ -o filename ] [ -O ] [ -P ] [ -s | -t pa | pl | ex ] [ -S sort-mem ] [ -W seconds ] [ --name=value ] database
postgres [ -A 0 | 1 ] [ -B nbuffers ] [ -c name=value ] [ -d debug-level ] [ -D datadir ] [ -e ] [ -f s | i | t | n | m | h ] [ -F ] [ -o filename ] [ -O ] [ -p database ] [ -P ] [ -s | -t pa | pl | ex ] [ -S sort-mem ] [ -v protocol ] [ -W seconds ] [ --name=value ]
可執行程式 postgres 是真正處理查詢的 PostgreSQL 伺服器程序。 通常它是不會被直接呼叫的;而是啟動一個 postmaster 多使用者伺服器。
上面的第二種形式就是
postmaster(1) 呼叫 postgres
的方法(只是概念上的,因為
postmaster 和 postgres
實際上是一樣的程式);
我們不能這樣直接呼叫它。第一種形式以互動單使用者模式直接呼叫該伺服器。
這種用法的主要用途是在
initdb
做初始化時用。有時候它被用做除錯災難性恢復。
當從 shell
上以互動模式呼叫時,使用者可以輸入查詢並且結果會列印在螢幕上,
不過格式對開發人員更有用,對使用者卻差好多。
不過請記住,執行一個單使用者伺服器並不適合於除錯該伺服器,
因為沒有實際的程序間通訊和鎖動作發生。
當執行一個單使用者伺服器時,將把會話使用者設定為
ID 為 1 的使用者。
該使用者不必實際存在,因此一個獨立執行的伺服器可以用於對某些意外損壞的系統表中進行手工恢復。
在獨立執行模式下,系統隱含地賦予
ID 為 1
的使用者超級使用者許可權。
如果 postgres 是由一個 postmaster(1) 啟動的,那麼它繼承後者的所有選項集。另外 postgres 相關的選項可以用 -o 開關從 postmaster(1) 傳遞。
你可以透過設定一個配置檔案來避免鍵入這些選項。
參閱Section 16.4獲取細節。
有些(安全的)選項還可以從聯接過來的客戶端設定,
這樣就獲得了一種應用無關的方法。
比如,如果設定了
PGOPTIONS 環境變數,
那麼基於 libpq
的客戶端就都把那個字串傳遞給伺服器,
會解釋成 postgres
命令列選項。
選項 -A, -B, -c, -d, -D, -F, 和 --name 和 postmaster(1) 裡的有相同的含義。只是 -d 0 避免 postmaster(1) 的除錯級別傳播到 postgres。
還有幾個其他的選項可以宣告,主要用於除錯用途。 這些東西在這裡列出只是給 PostgreSQL 系統開發人員使用的。 我們強烈反對使用這些選項。 另外這些選項的任何一項都可能在未來版本中消失而不加說明。
對於其它的在單使用者模式裡有一點點影響的環境變數,請參閱
postmaster(1).
要停止執行一個查詢,使用 SIGINT 給正在執行該命令的 postgres 程序發訊號。
要告訴 postgres
重新讀取配置檔案,
使用一個 SIGHUP 訊號。
通常我們最好給 postmaster
傳送 SIGHUP; postmaster 將隨後 SIGHUP
他的每個子程序。
但是有時候我們可能想只讓一個
postgres
程序重灌載配置檔案。
postmaster 使用 SIGTERM 告訴postgres程序正常退出, 而 SIGQUIT 是不 經過正常清理的退出。 這些訊號不應該由使用者使用。 給一個 postgres 程序傳送 SIGKILL 也是不明智的: postmaster 將把這個訊號解釋成一次在 postgres 裡的 崩潰, 並且會強制所有他的子 postgres 程序像在一個標準的崩潰-恢復過程裡一 樣退出。
用下面這樣的命令啟動一個獨立的伺服器
postgres -D /usr/local/pgsql/data other-options my_database
通常,獨立執行的伺服器把換行符當做命令輸入完成字元;
它還不懂分號的作用,因為那些東西是在
psql(1) 裡的。
要想把一行分成多行寫,你必需在除最後一個換行符以外的每個換行符前面敲一個反斜槓。
但是如果你使用 -N
命令列開關,那麼換行符就不會中止命令輸入。
伺服器將從標準輸入讀取資料,直到碰到檔案結尾(EOF),
然後把輸入當做一個單個的命令字串處理。這個時候反斜槓-換行符就不再當做特殊情況處理。
要退出會話,鍵入EOF
(通常是 Control+D)。
如果你已經使用了
-N,需要用兩個連續的EOF來退出。
請注意獨立執行的伺服器不會提供複雜的行編輯功能(比如,沒有命令列歷史)。
initdb(1), ipcclean(1), postmaster(1)
Postgresql 中文網站 何偉平 <laser@pgsqldb.org>
本頁面中文版由中文
man 手冊頁計劃提供。
中文 man
手冊頁計劃:https://github.com/man-pages-zh/manpages-zh
2003-11-02 | Application |