pg_ctl — 啓動、中止、重啓 PostgreSQL

pg_ctl

名稱

pg_ctl -- 啓動、中止、重啓 PostgreSQL前端

語法

pg_ctl start [-w] [-s] [-D datadir] [-l filename] [-o options] [-p path]
pg_ctl stop [-W] [-s] [-D datadir] [-m s[mart] | f[ast] | i[mmediate] ]
pg_ctl restart [-w] [-s] [-D datadir] [-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] [-o options]
pg_ctl unregister [-N servicename]程序員

描述

pg_ctl 用於啓動、中止、重啓 PostgreSQL 後端服務器(postgres),或者顯示一個運行着的服務器的狀態。儘管能夠手動啓動服務器,可是 pg_ctl 封裝了從新定向日誌輸出,與終端和進程組合理分離,以及另外提供了一個選項用於有控制的關閉。sql

在 start 模式裏會啓動一個新的服務器。服務器是在後臺啓動的,標準輸入被附着到了 /dev/null 上。若是使用了 -l ,那麼標準輸出和標準錯誤將被定向到一個日誌文件,要麼就是重定向到 pg_ctl 的標準輸出(而不是標準錯誤)。若是沒有選定日誌文件,pg_ctl 的標準輸出應該重定向到一個文件或者用管道輸出到相似 rotatelogs這樣的日誌滾動程序,不然,postgres 將把它的輸出寫到控制終端(在後臺)而且將不會脫離
shell 的進程組。shell

在 stop 模式下,那個正在特定數據目錄運行的服務器將被關閉。你能夠用 -m 選項選擇三種不一樣的關閉模式:"Smart"模式等待全部客戶端中斷鏈接,這是缺省。"Fast"模式並不等待客戶端中斷鏈接,全部活躍事務都被回滾而且客戶端都被強制斷開。"Immediate"模式將在沒有乾淨關閉的狀況下強行退出。這麼作將致使在從新啓動的時候的恢復。數據庫

restart 其實是先執行一箇中止,而後緊跟一個啓動。它容許變換 postgres 的命令行選項。編程

reload 模式簡單地給 postgres 發送一個 SIGHUP 信號,致使它從新讀取配置文件(postgresql.conf,pg_hba.conf 等),這樣就容許修改配置文件選項而不用重啓系統便可生效。後端

status 模式監查一個服務器是否在指定的數據目錄運行,若是是,那麼顯示其 PID 和調用它的命令行選項。安全

kill 模式容許你給一個指定的進程發送信號。這個功能對 Microsoft Windows 特別有用,由於它沒有 kill 命令。使用 --help 查看支持的信號名字列表。服務器

register 模式容許你在 Microsoft Windows 上註冊一個系統服務。數據結構

unregister 模式容許你在 Microsoft Windows 上刪除先前用 register 命令註冊的系統服務。

選項

-D datadir

聲明該數據庫的文件系統位置。若是忽略則使用 PGDATA 環境變量。

-l filename

把服務器日誌輸出附加在 filename 文件上。若是該文件不存在則建立它。umask 設置爲 077 ,所以缺省時是不容許從其它用戶向日志文件訪問的。

-m mode

聲明關閉模式。mode 能夠是 smartfastimmediate 之一,或者是這三個的首字母之一。

-o options

聲明要直接傳遞給 postgres 的選項。

參數一般都用單或者雙引號包圍以保證它們做爲一個總體傳遞。

-p path

聲明 postgres 可執行文件的位置。缺省位於 pg_ctl 自身所在目錄,若是沒找到則使用硬編碼的安裝目錄。除非你想幹點什麼特別的事情,而且想獲得相似沒有找到 postgres 這樣的錯誤,不然必須使用這個選項。

-s

只打印錯誤,而不打印提示性信息。

-w

等待啓動或者關閉的完成(60 秒超時),這個參數是關閉時的缺省值。成功的關閉是以刪除 PID 文件爲標誌的。對於啓動而言,一次成功的 psql -l 就標誌着成功。pg_ctl 將企圖使用對 psql 合適的端口,若是存在 PGPORT環境變量,那麼將用它。不然,它將查找在 postgresql.conf 文件裏是否設置了一個端口。若是都沒有,它將使用
PostgreSQL 編譯時的缺省端口(缺省 5432)。在等待的時候,pg_ctl 將根據啓動或者關閉的成功情況返回一個準確的退出代碼。

-W

不等待啓動或者中止的完成。這是啓動和重啓的缺省。

Windows 選項

-N servicename

要註冊的系統服務的名字。這個名字將用於服務名和顯示名。

-P password

用戶啓動服務的口令

-U username

用於啓動服務的用戶的用戶名。對於域用戶,使用 DOMAIN\username 格式。

環境變量

PGDATA

缺省數據目錄位置

PGPORT

psql 的缺省端口(由 -w 選項使用)。

其它的環境變量請參閱 postgres

文件

postmaster.pid

這個文件存在於數據目錄中是爲了幫助 pg_ctl 判斷服務器當前是否在運行。

postmaster.opts.default

若是這個文件存在於數據目錄,pg_ctl (在 start 模式下)將把文件地內容看成傳遞給 postgres 命令的選項傳遞過去,除非被 -o 選項覆蓋。

postmaster.opts

若是這個文件存在於數據目錄,pg_ctl (在 start 模式下)將把文件地內容看成傳遞給 postgres 命令的選項傳遞過去,除非被 -o 選項覆蓋。這個文件的內容也會在 status 模式裏顯示出來。

postgresql.conf

這個文件在數據目錄中,會分析它以查找和 psql 一塊兒用的合適的端口(在 start 模式裏給出 -w 的時候)。

注意

等待徹底啓動還不是一個定義得很完整的操做,若是訪問控制設置爲本地客戶端在沒有手工交互的狀況下不能訪問的話還可能會失效(好比口令認證)。

例子

啓動服務器

啓動服務器:

$ pg_ctl start

啓動服務器的一個例子,等到服務器啓動了才退出:

$ pg_ctl -w start

服務器使用 5433 端口,並且不帶 fsync 運行,使用:

$ pg_ctl -o "-F -p 5433" start

中止服務器

$ pg_ctl stop

使用 -m 選項中止服務器容許用戶控制如何關閉後端。

重啓服務器

這個命令幾乎等於先中止服務器而後再啓動它,只不過 pg_ctl 保存並從新使用上一次運行服務器的命令行參數。重啓服務器的最簡單的方法是:

$ pg_ctl restart

重啓服務器,等待其中止和重啓:

$ pg_ctl -w restart

使用 5433 端口重啓而且重啓後關閉 fsync :

$ pg_ctl -o "-F -p 5433" restart

顯示服務器狀態

下面是來自 pg_ctl 的狀態輸出的例子:

$ 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 模式中被調用的命令行。

又見

postgres

pg_resetxlog

名稱

pg_resetxlog -- 重置一個數據庫集羣的預寫日誌以及其它控制內容

語法

pg_resetxlog [-f] [-n] [-ooid ] [-x xid ] [-e xid_epoch ] [-m mxid ] [-O mxoff ]
[-l timelineidfileid,seg ] datadir

描述

pg_resetxlog 清理預寫日誌(WAL)而且能夠有選擇地重置其它一些存儲在 pg_control 文件中的控制信息。有時候,若是這些文件崩潰了,就須要這個功能。必定只把它用做最後的方法,就是說只有由於這樣的崩潰致使服務器沒法啓動的時候才使用。

運行這個命令以後,可能就能夠啓動服務器了,可是,必定要記住數據庫可能由於部分提交的事務而含有不完整的數據。你應該立刻轉儲數據,運行 initdb ,而後從新加載。在從新加載以後,檢查不完整的部分而後根據須要進行修復。

這個命令只能由安裝服務器的用戶運行,由於它須要對數據目錄的讀寫權限。出於安全考慮,pg_resetxlog 不使用環境變量 PGDATA ,你必須在命令行上聲明數據目錄。

若是 pg_resetxlog 抱怨說它沒法判斷用於 pg_control 的有效數據,那麼你能夠強制它繼續處理,方法是聲明-f(強制)開關。在這種狀況下,那些丟失了的數據將用模糊的近似數值代替。大多數字段均可以匹配上,可是下一個 OID 、下一個事務 ID 、下一個事務 ID 的 epoch(時間點)、下一個多事務 ID(兩階段提交的東西)、下一個多事務偏移量、WAL
開始地址、數據庫區域字段可能須要手工幫助,前面六個能夠用下面討論的開關設置。pg_resetxlog 本身的環境是猜想區域字段的來源;看看 LANG 等東西,它們應該和 initdb 運行的環境相匹配。若是你不能判斷全部這些字段的正確數值,那麼 -f 仍然可使用,可是這樣恢復過來的數據庫正確性更值得懷疑:當即轉儲和從新加載是必須的。在轉儲以前不要執行任何修改數據的操做,由於任何這樣的動做均可能把事情搞得更糟糕。

-o-x-e-m-O-l 開關容許手工設置下一個 OID 、下一個事務 ID 、下一個事務 ID epoch 、下一個多事務 ID 、下一個多事務偏移量、WAL 起始位置的數值。只有在 pg_resetxlog 沒法經過讀取 pg_control 判斷合適的數值的時候才須要它。安全的數值能夠用下面的方法判斷:

  • 對於下一個事務 ID(-x)而言,一個安全的數值是看看數據目錄裏的 pg_clog 裏數值最大的文件名,而後加一,而後再乘上 1048576 。請注意那些文件名是十六進制的。一般也以十六進制的形式聲明開關值是最簡單的。好比,若是 0011 是 pg_clog 裏最大的記錄,-x
    0x1200000
     就能夠了(後面的五個零提供了合適的乘積)。

  • 下一個多事務 ID(-m)的安全值能夠經過查看數據目錄裏 pg_multixact/offsets 子目錄裏面的數字最大的文件名,加一,而後乘以 65536 獲得。和上面同樣,文件名是十六進制的,所以最簡單的方法是給開關聲明一個十六進制的開關值,而後在結尾加四個零。

  • 下一個多事務偏移量(-O)的安全值能夠經過檢查數據目錄裏 pg_multixact/members 子目錄下的數字最大的文件名,加一,而後乘以 65536 獲得。和上面同樣,文件名是十六進制的,所以最簡單的方法是給開關聲明一個十六進制的開關值,而後在結尾加四個零。

  • WAL 的起始位置(-l)應該比目前存在於數據目錄 pg_xlog 裏面的任何文件號都大。它的文件名也是十六進制的,而且有三部分。第一部分是"時間線 ID",一般應該保持相同。第三部分不要選擇大於 255(0xFF);應該是在達到 255 的時候給第二部分增一而後重置第三部分爲 0 。好比,若是 00000001000000320000004A 是pg_xlog 裏最大的條目,那麼 -l
    0x1,0x32,0x4B
     就能夠了;但若是最大的條目是000000010000003A000000FF ,那麼選擇 -l 0x1,0x3B,0x0 或更多。

  • 沒有很容易的辦法來判斷比數據庫中最大的 OID 大一號的下一個 OID ,不過很走運的是獲取正確的下一個 OID 並不是很是關鍵的事情。

  • 除了由 pg_resetxlog 設定的字段外,事務 ID epoch 實際上並未存儲在數據庫裏的任何地方。因此只要是涉及到數據庫自身的任何數值都有效。你可能須要調整這個值以確保諸如 Slony-I 之類的備份系統可以正常工做。若是是這樣的話,應當從下游已複製的數據庫中獲取恰當的值。

-n(無操做)開關指示 pg_resetxlog 打印從 pg_control 從新構造的數值而後不修改任何值就退出。這主要是一個調試工具,可是在 pg_resetxlog 真正處理前進行的整潔性檢查的時候可能會有用。

注意

在服務器運行的時候必定不要運行這個命令。若是發如今數據文件目錄裏有鎖文件,那麼 pg_resetxlog 將拒絕啓動。若是服務器崩潰,那麼可能會剩下一個鎖文件;若是這樣,你能夠刪除該鎖文件以便容許 pg_resetxlog運行。可是在你這麼作以前,必定要確保沒有任何後端服務器進程仍在運行。

postgres

名稱

postgres -- PostgreSQL 數據庫服務器

語法

postgres [option...]

描述

postgres 是 PostgreSQL 數據庫服務器。客戶端應用程序爲了訪問數據庫,將經過 TCP Socket 或 Unix domain socket 鏈接到一個運行中的 postgres 進程。而後該 postgres 實例將啓動(fork)一個新的、獨立的服務器進程來處理這個鏈接。

一個 postgres 老是管理來自同一個數據庫集羣的數據。一個數據庫集羣是一組在同一個文件系統位置("數據區")存放數據的數據庫。一個系統上能夠同時運行多個 postgres 進程,只要他們使用不一樣的數據區和不一樣的端口號(見下文)。postgres 啓動時須要知道數據區的位置,該位置必須經過 -D 選項或 PGDATA 環境變量指定。一般,-D 或 PGDATA 都直接指向由
initdb 建立的集羣目錄。其餘可能的文件佈局在節17.2裏面有討論。

缺省時 postgres 在前臺啓動並將日誌信息輸出到標準錯誤。但在實際應用中,postgres 應看成爲後臺進程啓動,並且多數是在系統啓動時自動啓動。

postgres 還能以單用戶模式運行。這種用法的主要用於 initdb 的初始化過程當中。有時候它也被用於調試災難性恢復。不過,單用戶模式運行的服務器並不適合於調試,由於沒有實際的進程間通信和鎖動做發生。當從 shell 上以單用戶模式調用時,用戶能夠輸入查詢,而後結果會在屏幕上以一種更適合開發者閱讀(不適合普通用戶)的格式顯示出來。在單用戶模式下,將把會話用戶 ID 設爲 1 並賦予超級用戶權限。該用戶沒必要實際存在,所以單用戶模式運行的服務器能夠用於對某些意外損壞的系統表進行手工恢復。

選項

postgres 接受下列命令行參數。關於這些選項的更詳細討論請參考章17。你也能夠經過設置一個配置文件來減小敲擊這些選項。有些(安全的)選項還能夠從鏈接過來的客戶端設置,以一種應用無關的方法僅對該會話生效。好比,若是設置了 PGOPTIONS 環境變量,那麼基於 libpq 的客戶端就都把那個字符串傳遞給服務器,並被服務器解釋成 postgres 命令行選項。

通用用途

-A 0|1

打開運行時斷言檢查,是檢測編程錯誤的調試幫助。只有在編譯 PostgreSQL 時打開了它,你才能使用它。若是編譯時打開了,缺省是打開。

-B nbuffers

爲服務器進程分配和管理的共享內存緩衝區數量。這個參數的缺省值是 initdb 自動選擇的;參考節17.4.1獲取更多信息。

-c name=value

設置一個命名的運行時參數。PostgreSQL 支持的配置參數在章17裏描述。大多數其它命令行選項實際上都是這樣的參數賦值的短形式。-c 能夠出現屢次從而設置多個參數。

-d debug-level

設置調試級別。數值越高,寫到服務器日誌的調試輸出越多。取值範圍是 1 到 5 。還能夠針對某次單獨的會話使用 -d 0 來防止從父 postgres 進程繼承日誌級別。

-D datadir

聲明數據目錄或者配置文件的文件系統路徑。細節詳見節17.2。

-e

把缺省日期風格設置爲"European",也就是說用 DMY 規則解釋日期輸入,而且在一些日期輸出格式裏日子在月份前面打印。參閱節8.5獲取更多細節。

-F

關閉 fsync 調用以提升性能,可是要冒系統崩潰時數據毀壞的風險。聲明這個選項等效關閉了 fsync 參數。在使用以前閱讀詳細文檔!

-h hostname

指定 postgres 偵聽來自前端應用 TCP/IP 鏈接的 IP 主機名或地址。數值也能夠是一個用空格分隔的地址列表,或者 * 表示監聽全部可用的地址。空值表示不監放任何 IP 地址,而只使用 Unix 域套接字與客戶端通訊。缺省只監聽 localhost 。聲明這個選項等效於設置 listen_addresses 配置參數。

-i

這個選項容許遠程客戶經過 TCP/IP(網際域套接字)與服務器通信。沒有這個選項,服務器將只接受本地鏈接。這個選項等效於在 postgresql.conf 中或者經過 -h 選項將 listen_addresses 設爲 *

這個選項已經廢棄了,由於它不能實現 listen_addresses 的全部功能。因此最好直接設置 listen_addresses

-k directory

指定 postgres 偵聽來自前端應用鏈接的 Unix 域套接字的目錄。缺省一般是 /tmp ,可是能夠在編譯的時候修改。

-l

這個選項使用 SSL 進行的安全通信。要使用這個選項,編譯 PostgreSQL 時你必須打開了 SSL 支持。有關使用 SSL 的信息,請參考節16.7。

-N max-connections

設置最多容許同時鏈接多少個客戶端(也就是最多同時運行多少個服務器進程)。缺省值爲 32 ,不過該值最大能夠設置爲系統所能承受的極限。請注意 -B 的值要求至少兩倍於 -N 的值。參閱節16.4獲取有關大量客戶的系統資源需求。聲明這個選項等效於聲明 max_connections 配置參數。

-o extra-options

在 extra-options 裏面指定的命令行選項將被傳遞給全部由這個 postgres 派生的服務進程。若是選項字符串包含任何空白,那麼整個字符串必須用引號界定。

反對使用該選項,全部服務器進程的命令行選項均可以直接在 postgres 命令行上指定,沒必要這麼麻煩。

-p port

指定 postgres 偵聽客戶端鏈接的 TCP/IP 端口或本地 Unix domain socket 文件的擴展。缺省的端口號是環境變量 PGPORT 的值。若是 PGPORT 沒有設置,那麼缺省是 PostgreSQL 編譯時指定的值(一般是 5432)。若是你聲明瞭一個非缺省端口,那麼全部前端應用都必須用命令行選項或者 PGPORT 聲明同一個端口。

-s

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

-S  work-mem

聲明內部排序和散列在求助於臨時磁盤文件以前可使用的內存數量。參閱節17.4.1裏描述的配置變量work_mem

--name=value

設置一個命名的運行時參數;其縮寫形式是 -c

--describe-config

以製表符分隔的 COPY 格式,導出服務器內部配置變量、描述、缺省值。設計它主要是給管理工具使用。

半內部選項

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

-f  { s | i | m | n | h }

禁止某種掃描和鏈接方法的使用:s 和 i 分別關閉順序和索引掃描,而 nmh 分別關閉嵌套循環,融合(merge)和 Hash 鏈接。

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

-n

該選項主要用於調試致使服務器進程異常崩潰的問題。對付這種狀況的通常策略是通知全部其它服務器進程終止並從新初始化共享內存和信號燈。這是由於一個出錯的服務器進程可能在終止以前就已經對共享的東西形成了破壞。該選項指定 postgres 不從新初始化共享數據結構。一個有經驗的系統程序員這時就可使用調試器檢查共享內存和信號燈狀態。

-O

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

-P

讀取系統表時忽略系統索引(但在更改數據時仍然更新索引)。這對於從索引已經損壞的系統表中回覆是頗有幫助的。

-t  pa[rser] | pl[anner] | e[xecutor]

打印與每一個主要系統模塊相關的查詢記時統計。它不能和 -s 選項一塊兒使用。

-T

該選項主要用於調試致使服務器進程異常崩潰的問題。對付這種狀況的通常策略是通知全部其它服務器進程終止並從新初始化共享內存和信號燈。這是由於一個出錯的服務器進程可能在終止以前就已經對共享的東西形成了破壞。該選項指定 postgres 經過發送 SIGSTOP 信號中止其餘全部服務器進程,可是並不讓它們退出。這樣就容許系統程序員手動從全部服務器進程蒐集內核轉儲。

-v  protocol

聲明此次會話使用的前/後服務器協議的版本數。該選項僅在內部使用。

-W  seconds

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

-y  database

代表這是一個由父 postgres 進程啓動的子進程,並使用指定的數據庫。該選項僅供內部使用。

單用戶模式的選項

下面的選項僅在單用戶模式下可用。

--single

選中單用戶模式。這個必須是命令行中的第一個選項。

database

要訪問的數據庫名字。若是忽略掉則缺省爲用戶名。

-E

回顯全部命令

-j

禁止使用新行做爲語句分隔符

-r  filename

將全部服務器輸出日誌保存到 filename 中。在多用戶模式下該選項將被忽略,全部進程都將使用 stderr

環境變量

PGCLIENTENCODING

客戶端使用的缺省字符編碼。客戶端能夠獨立地覆蓋它。這個值也能夠在配置文件裏設置。

PGDATA

缺省數據目錄位置

PGDATESTYLE

運行時參數 DateStyle 的缺省值。如今反對使用該環境變量。

PGPORT

缺省端口(最好在配置文件中設置)

TZ

服務器的時區

診斷

一個提到了 semget 或 shmget 的錯誤信息可能意味着你須要從新配置你的內核,提供足夠的共享內存和信號燈。更多討論,參閱節16.4。你也能夠經過下降 shared_buffers 值以減小 PostgreSQL 的共享內存的消耗,或者下降 max_connections 值減小 PostgreSQL 的信號燈的消耗。

若是碰到一個說另一個服務器正在運行的錯誤信息,能夠根據不一樣的系統使用命令

$ ps ax | grep postgres

$ ps -ef | grep postgres

若是確信沒有衝突的服務器正在運行,那麼你能夠刪除消息裏提到的鎖文件而後再次運行。

抱怨沒法綁定端口的錯誤信息可能代表該端口已經被其它非 PostgreSQL 進程使用。若是終止 postgres 後又立刻用同一個端口運行它,也可能獲得這個錯誤信息;這時,你必須多等幾秒,等操做系統關閉了該端口後再試。最後,若是你使用了一個操做系統認爲是保留的端口,也可能致使這個錯誤信息。例如,個人 Unix 版本認爲低於 1024 的端口號是"可信任的",於是只有 Unix 超級用戶可使用它們。

注意

若是有可能,不要使用 SIGKILL 殺死主 postgres 服務器進程。這樣會阻止 postgres 在退出前釋放它持有的系統資源(例如共享內存和信號燈)。這樣可能會影響到未來啓動新的 postgres 進程。

可使用 SIGTERMSIGINTSIGQUIT 信號正常結束 postgres 服務器進程。第一個信號將等待全部的客戶端退出後才退出。第二個將強制斷開全部客戶端,而第三個將不中止馬上退出,致使在重啓時的恢復運行。SIGHUP會從新加載服務器配置文件。也能夠向一個單獨的服務器進程發送 SIGHUP 信號,可是這樣作沒什麼意義。

pg_ctl 工具能夠用於安全而有效地啓停 postgres ,推薦使用。

要推出一個正在運行的查詢,能夠向正在執行該查詢的進程發送 SIGINT 信號。

主 postgres 服務器進程向子進程發送 SIGTERM 信號讓它們正常退出;發送 SIGQUIT 信號當即退出且不作清理工做,用戶應當儘可能避免使用該信號。同時,發送 SIGKILL 信號也是不明智的:主 postgres 進程將把這個信號看成崩潰信號,而後會強制其餘兄弟進程做爲標準的崩潰回覆過程退出。

臭蟲

-- 選項在 FreeBSD 或 OpenBSD 上沒法運行,應該使用 -c 。這在受影響的系統裏是個臭蟲;若是這個毛病沒有修補好,未來的 PostgreSQL 版本將提供一個繞開的辦法。

用法

啓動一個單用戶模式的服務器:

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

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

一般,獨立運行的服務器把換行符當作命令輸入完成字符;它還不懂分號的做用,由於那些東西是在 psql 裏的。要想把一行分紅多行寫,你必需在除最後一個換行符之外的每一個換行符前面敲一個反斜槓。

可是若是使用了 -j 命令行選項,新行將不被看成命令結束符。此時服務器將從標準輸入一直讀取到 EOF 標誌爲止,而後把把全部讀到的內容看成一個完整的命令字符串看待,而且反斜槓與換行符也被看成普通字符來看待。

輸入 EOF(Control+D)便可退出會話。若是你已經使用了 -j 則必須連續使用兩個 EOF 才行。

請注意單用戶模式運行的服務器不會提供複雜的行編輯功能(好比,沒有命令行歷史)。

例子

用缺省值在後臺啓動 postgres :

$ nohup postgres >logfile 2>&1 </dev/null &

在指定的端口啓動 postgres :

$ postgres -p 1234

這條命令將在端口 1234 啓動 postgres 。你應該這樣使用 psql 與之鏈接:

$ psql -p 1234

或者設置環境變量 PGPORT :

$ export PGPORT=1234
$ psql

命名的運行時參數能夠用下列的風格之一設置:

$ postgres -c work_mem=1234
$ postgres --work-mem=1234

兩種形式都覆蓋那些現有的在 postgresql.conf 裏面的 work_mem 設置。請注意在參數名裏的下劃線在命令行上能夠寫成下劃線,也能夠寫成連字符。除了用於短時間的實驗之外,更好的習慣是編輯 

相關文章
相關標籤/搜索