【PostgreSQL的 \watch命令】

在Linux环境需要以一定频率去查看一个结果的时候,我们可能会用到watch命令,例如watch -n 1 date,watch -n 1 ls这种用法,每一秒执行一次并查看其结果。


而在PostgreSQL里,我们先执行一个SQL,然后通过\watch 跟上秒数,就可以实现类似于Linux系统本身的watch命令。


postgres=# select now();
              now
-------------------------------
 2022-09-01 07:37:09.841115+08
(1 row)

postgres=#
postgres=# \watch 1
Thu 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'

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小怪兽ysl

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值