支援的版本: 目前 (17) / 16 / 15 / 14 / 13
開發版本: devel
不支援的版本: 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2

27.1. 標準 Unix 工具 #

在大多數 Unix 平台上,PostgreSQL 會修改其命令標題 (由 ps 報告),以便可以輕鬆識別個別伺服器程序。範例顯示如下:

$ ps auxww | grep ^postgres
postgres  15551  0.0  0.1  57536  7132 pts/0    S    18:02   0:00 postgres -i
postgres  15554  0.0  0.0  57536  1184 ?        Ss   18:02   0:00 postgres: background writer
postgres  15555  0.0  0.0  57536   916 ?        Ss   18:02   0:00 postgres: checkpointer
postgres  15556  0.0  0.0  57536   916 ?        Ss   18:02   0:00 postgres: walwriter
postgres  15557  0.0  0.0  58504  2244 ?        Ss   18:02   0:00 postgres: autovacuum launcher
postgres  15582  0.0  0.0  58772  3080 ?        Ss   18:04   0:00 postgres: joe runbug 127.0.0.1 idle
postgres  15606  0.0  0.0  58772  3052 ?        Ss   18:07   0:00 postgres: tgl regression [local] SELECT waiting
postgres  15610  0.0  0.0  58772  3056 ?        Ss   18:07   0:00 postgres: tgl regression [local] idle in transaction

(ps 的適當調用方式因不同平台而異,所顯示的詳細資訊也不同。此範例來自最新的 Linux 系統。) 此處列出的第一個程序是主要伺服器程序。 為其顯示的命令參數與啟動時使用的參數相同。 接下來的四個程序是由主要程序自動啟動的背景工作程序。(如果您已設定系統不執行自動清理,則不會出現「自動清理啟動器」程序。) 其餘每個程序都是處理一個用戶端連線的伺服器程序。 每個此類程序都以以下形式設定其命令列顯示:

postgres: user database host activity

使用者、資料庫和(用戶端)主機項目在用戶端連線的生命週期內保持不變,但活動指示符會變更。 活動可以是 idle(即,等待用戶端命令)、idle in transaction(在 BEGIN 區塊內等待用戶端)或命令類型名稱,例如 SELECT。 此外,如果伺服器程序目前正在等待另一個工作階段持有的鎖定,則會附加 waiting。 在上面的範例中,我們可以推斷程序 15606 正在等待程序 15610 完成其交易,從而釋放某些鎖定。(程序 15610 必須是封鎖者,因為沒有其他活動的工作階段。 在更複雜的情況下,有必要查看 pg_locks 系統檢視來判斷誰在封鎖誰。)

如果已設定 cluster_name,叢集名稱也會顯示在 ps 輸出中

$ psql -c 'SHOW cluster_name'
 cluster_name
--------------
 server1
(1 row)

$ ps aux|grep server1
postgres   27093  0.0  0.0  30096  2752 ?        Ss   11:34   0:00 postgres: server1: background writer
...

如果您已關閉 update_process_title,則活動指示符不會更新; 程序標題僅在新程序啟動時設定一次。 在某些平台上,這可以節省每個命令的可測量額外負荷;在其他平台上,這並不重要。

提示

Solaris 需要特殊處理。 您必須使用 /usr/ucb/ps,而不是 /bin/ps。 您還必須使用兩個 w 旗標,而不僅僅是一個。 此外,您原始調用 postgres 命令必須具有比每個伺服器程序提供的更短的 ps 狀態顯示。 如果您未能完成所有三件事,則每個伺服器程序的 ps 輸出將是原始的 postgres 命令列。

提交更正

如果您在文件中看到任何不正確、與特定功能的經驗不符或需要進一步澄清的內容,請使用 此表單 回報文件問題。