PostgreSQL-15的 \watch命令

T1YSL發表於2022-10-16

在Linux環境需要以一定頻率去檢視一個結果的時候,我們可能會用到watch命令,例如watch -n 1 date,watch -n 1 ls這種用法,每一秒執行一次並檢視其結果。


而在PostgreSQL-15版本里,我們先執行一個SQL,然後透過\watch 跟上秒數,就可以實現類似於Linux系統本身的watch命令。

postgres=# select now();
              now-------------------------------
 2022-09-01 07:37:09.841115+08
(1 row)
postgres=#postgres=# \watch 1Thu 01 Sep 2022 07:37:17 AM CST (every 1s)
              now-------------------------------
 2022-09-01 07:37:17.628895+08
(1 row)
Thu 01 Sep 2022 07:37:18 AM CST (every 1s)
              now-------------------------------
 2022-09-01 07:37:18.630712+08
(1 row)

這一改動,在我們需要長時間盯著資料庫中某個檢視結果的時候是比較方便的,但是不得不說,在某些場景下,它著實有一點雞肋,因為本身Linux系統帶有的watch就很強大了,而且資料庫新加的\watch命令只能不停執行SQL命令並不斷往下刷屏,Linux本身自帶的watch可以結合psql客戶端的-c命令實現動態重新整理結果,而不是頻繁向下滾動刷屏的效果,例如執行

watch -n 1 'psql -c "select now();"'

這個結果會位於終端的上方,一直是一個重新整理的狀態。

而它比較好的一點也是因為這個執行刷屏的這點,因為可以檢視每次的變化情況。然而,透過linux的watch也可以把每次執行的結果追加到檔案裡,這個時候雖然當前的這個終端不能動態檢視了,但是隻要我們另外開啟一個終端,直接tail -f 去檢視這個檔案,其實和\watch的這個滾動效果是基本一樣的。

但因為我是用的本地連線執行,相對於遠端執行且需要輸密碼的情況可能確實這個\watch的更加友好和安全。因為除了第一次連線資料庫需要輸密碼外,不會出現像使用linux的自帶的watch命令結合psql的遠端連線可能會讓明文密碼出現在伺服器命令列歷史記錄裡的問題

watch -n 1 'psql -c "select now();" >> 1.txt'


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69990629/viewspace-2918602/,如需轉載,請註明出處,否則將追究法律責任。

相關文章