POSTGRES(1)

NAME
postgres - 以單使用者模式運行一個 PostgreSQL伺服器

SYNOPSIS

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 ]

DESCRIPTION 描述

可執行程式 postgres 是真正處理查詢的 PostgreSQL 伺服器進程。 通常它是不會被直接調用的；而是啟動一個 postmaster 多使用者伺服器。

 上面的第二種形式就是 postmaster(1) 調用 postgres 的方法（只是概念上的，因為 postmaster 和 postgres 實際上是一樣的程式）； 我們不能這樣直接調用它。第一種形式以交互單使用者模式直接調用該伺服器。 這種用法的主要用途是在 initdb 做初始化時用。有時候它被用做調試災難性恢復。

 當從 shell 上以交互模式調用時，使用者可以輸入查詢並且結果會列印在螢幕上， 不過格式對開發人員更有用，對使用者卻差好多。 不過請記住，運行一個單使用者伺服器並不適合於調試該伺服器， 因為沒有實際的進程間通訊和鎖動作發生。

 當運行一個單使用者伺服器時，將把會話使用者設置為 ID 為 1 的使用者。 該使用者不必實際存在，因此一個獨立運行的伺服器可以用於對某些意外損壞的系統表中進行手動恢復。 在獨立運行模式下，系統隱含地賦予 ID 為 1 的使用者超級使用者權限。

OPTIONS 選項

 如果 postgres 是由一個 postmaster(1) 啟動的，那麼它繼承後者的所有選項集。另外 postgres 相關的選項可以用 -o 開關從 postmaster(1) 傳遞。

 你可以通過設置一個配置檔案來避免鍵入這些選項。 參閱Section 16.4獲取細節。 有些（安全的）選項還可以從聯接過來的客戶端設置， 這樣就獲得了一種應用無關的方法。 比如，如果設置了 PGOPTIONS 環境變量， 那麼基於 libpq 的客戶端就都把那個字串傳遞給伺服器， 會解釋成 postgres 命令行選項。

  GENERAL PURPOSE 通用用途

選項 -A, -B, -c, -d, -D, -F, 和 --name 和 postmaster(1) 裏的有相同的含義。只是 -d 0 避免 postmaster(1) 的調試級別傳播到 postgres。

-e
     把預設日期風格設置為 "European"，也就是說用"DMY"規則解釋日期輸入， 並且在一些日期輸出格式裏日子在月份前面列印。 參閱 Section 8.5 ``Date/Time Types'' 獲取更多細節。

-o filename
     把所有伺服器日誌輸出到 filename。 如果伺服器是由 postmaster運行的， 則忽略這個選項，並且使用從 postmaster 繼承過來的stderr。

-P
     掃描/更新系統記錄時忽略系統表。對系統表/索引使用 REINDEX 時需要這個選項。

-s
     在每條命令結束時列印時間信息和其他統計信息。 這個開關對測試性能和調節緩沖區數量有好處。

-S sort-mem
     聲明內部排序和散列在求助於臨時磁碟檔案之前可以使用的記憶體數量。 該值是以 KB （千字節）為單位的，預設是 1024 KB。 注意對於復雜查詢，可能有好幾個並行的排序和/或散列， 而在它們把數據放到臨時檔案前，每個都會允許使用最多 sort-mem KB的記憶體。

  OPTIONS FOR STAND-ALONE MODE 單使用者模式的選項

database
     聲明要訪問的數據庫的名字。如果忽略掉則預設為使用者名。

-E
     回顯所有命令。

-N
     禁止把新行作為語句分隔符。

  SEMI-INTERNAL OPTIONS 半內部選項

 還有幾個其他的選項可以聲明，主要用於調試用途。 這些東西在這裏列出只是給 PostgreSQL 系統開發人員使用的。 我們強烈反對使用這些選項。 另外這些選項的任何一項都可能在未來版本中消失而不加說明。

-f { s | i | m | n | h }
     禁止某種掃描和連接方法的使用： s 和 i 分別關閉順序和索引掃描，而 n，m，和 h 分別關閉嵌套循環，融合（merge）和散列連接。

    Note: 注意: 順序掃描和嵌套循環都不可能完全被關閉。 -fs 和 -fn 選項僅僅是在存在其他方法時阻 礙優化器使用這些方法罷了。

-O
     允許修改系統表的結構。這個參數用於 initdb。

-p database
     告訴伺服器伺服器它是由一個 postmaster 啟動的並聲明要使用的數據庫等。

-t pa[rser] | pl[anner] | e[xecutor]
     列印與每個主要系統模塊相關的查詢記時統計。 它不能和 -s選項一塊使用。

-v protocol
     聲明這次會話使用的前/伺服器協議的版本數。

-W seconds
     一旦看見這個選項，進程就睡眠標出的秒數。 這樣就給開發者一些時間把調試器附著在該伺服器進程上。

--describe-config
     這個選項以 tab 分隔的 COPY 格式，倒出伺服器內部配置變量，描述和預設之。 設計它主要是給管理工具使用。

ENVIRONMENT 環境

PGDATA
     預設數據目錄位置

 對於其它的在單使用者模式裏有一點點影響的環境變量，請參閱 postmaster(1).

NOTES 注意

 要停止運行一個查詢，使用 SIGINT 給正在運行該命令的 postgres 進程發信號。

 要告訴 postgres 重新讀取配置檔案， 使用一個 SIGHUP 信號。 通常我們最好給 postmaster 發送 SIGHUP； postmaster 將隨後 SIGHUP 他的每個子進程。 但是有時候我們可能想只讓一個 postgres 進程重裝載配置檔案。

postmaster 使用 SIGTERM 告訴postgres進程正常退出， 而 SIGQUIT 是不 經過正常清理的退出。 這些信號不應該由使用者使用。 給一個 postgres 進程發送 SIGKILL 也是不明智的: postmaster 將把這個信號解釋成一次在 postgres 裏的 崩潰， 並且會強制所有他的子 postgres 進程像在一個標準的崩潰－恢復過程裏一 樣退出。

USAGE 用法

 用下面這樣的命令啟動一個獨立的伺服器

postgres -D /usr/local/pgsql/data other-options my_database

 用 -D 給伺服器提供正確的數據庫目錄的路徑， 或者確保環境變量 PGDATA 已經正確設置。 同時還要聲名你像用的特定數據庫名字。

 通常，獨立運行的伺服器把換行符當做命令輸入完成字符； 它還不懂分號的作用，因為那些東西是在 psql(1) 裏的。 要想把一行分成多行寫，你必需在除最後一個換行符以外的每個換行符前面敲一個反斜槓。

 但是如果你使用 -N 命令行開關，那麼換行符就不會中止命令輸入。 伺服器將從標準輸入讀取數據，直到碰到檔案結尾（EOF）， 然後把輸入當做一個單個的命令字串處理。這個時候反斜槓-換行符就不再當做特殊情況處理。

 要退出會話，鍵入EOF (通常是 Control+D)。 如果你已經使用了 -N，需要用兩個連續的EOF來退出。

 請注意獨立運行的伺服器不會提供復雜的行編輯功能（比如，沒有命令行歷史）。

SEE ALSO 參見

initdb(1), ipcclean(1), postmaster(1)

譯者
Postgresql 中文網站 何偉平 <laser@pgsqldb.org>