?
This document uses PHP Chinese website manual Release
PostgreSQL在大多數(shù)平臺(tái)上修改ps輸出的命令標(biāo)題, 這樣我們就很容易找出某個(gè)服務(wù)器進(jìn)程。一個(gè)簡(jiǎn)單的顯示如下:
$psauxww|grep^postgres postgres9600.01.161041480pts/1SN13:170:00postgres-i postgres9630.01.170841472pts/1SN13:170:00postgres:writerprocess postgres9650.01.161521512pts/1SN13:170:00postgres:statscollectorprocess postgres9980.02.365322992pts/1SN13:180:00postgres:tglrunbug127.0.0.1 idle postgres10030.02.465323128pts/1SN13:190:00postgres:tglregression[local]SELECTwaiting postgres10160.12.465323080pts/1SN13:190:00postgres:tglregression[local] idleintransaction
調(diào)用ps的方法因平臺(tái)的不同而略有不同,顯示出來的細(xì)節(jié)也有一些區(qū)別。 這個(gè)例子來自一個(gè)最近的Linux系統(tǒng)。這里顯示出來的第一個(gè)進(jìn)程是主服務(wù)器進(jìn)程。 顯示的命令參數(shù)和啟動(dòng)它的命令行參數(shù)相同。下面是由主服務(wù)器進(jìn)程自動(dòng)調(diào)用的兩個(gè)統(tǒng) 計(jì)收集器后臺(tái)進(jìn)程,如果你設(shè)置了系統(tǒng)不啟動(dòng)統(tǒng)計(jì)收集器,那么它們不會(huì)出現(xiàn)。剩下的都 是一個(gè)個(gè)處理客戶連接的服務(wù)器進(jìn)程,每個(gè)這樣的進(jìn)程都用下面的形式顯示:
postgres:userdatabasehostactivity
在該客戶端連接的生命期中,user,database和(client)主機(jī)都保持不變,但是活躍性指示符會(huì)變化。 活躍性可以是 idle(等待客戶端的命令)、 idleintransaction(在一個(gè)BEGIN塊里等待用戶)、 或者一個(gè)命令類型名,比如SELECT。同樣,如果當(dāng)前正在等待一個(gè)其它服務(wù)器進(jìn)程持有的鎖的時(shí)候, 會(huì)在信息后面附加waiting。在上面的例子中,我們可以推出:進(jìn)程1003正在等待1016完成其事務(wù), 這樣才能釋放一些鎖或者其它什么東西
如果關(guān)閉了update_process_title那么活躍性指示符將不會(huì)變化,并且進(jìn)程標(biāo)題僅在新進(jìn)程被啟動(dòng)的時(shí)候設(shè)置一次。 在某些平臺(tái)上這樣做可以節(jié)省每個(gè)命令的開銷,但在其它平臺(tái)上卻沒有這種差異。
Tip: Solaris需要特別的處理。你必需使用/usr/ucb/ps而不是/bin/ps。 你還必需使用兩個(gè)w標(biāo)志,而不是一個(gè)。另外,你最初調(diào)用postgres時(shí) 用到的命令行在ps狀態(tài)顯示中必須比ps給每個(gè)服務(wù)器進(jìn)程顯示的短。 如果沒滿足這三個(gè)條件,那么ps為每個(gè)服務(wù)器進(jìn)程 輸出的將是最初的postgres的命令行。