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來退出。
請注意獨立運行的服務器不會提供複雜的行編輯功能(比如,沒有命令行歷史)。
Postgresql 中文網站 何偉平 <laser@pgsqldb.org>
本頁面中文版由中文
man 手冊頁計劃提供。
中文 man
手冊頁計劃:https://github.com/man-pages-zh/manpages-zh
2003-11-02 | Application |