ITPub博客

首页 > 数据库 > PostgreSQL > PostgreSQL的 \watch命令

PostgreSQL的 \watch命令

原创 PostgreSQL 作者:T1YSL 时间:2022-10-16 22:04:23 0 删除 编辑

在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博客 ” ,链接:https://blog.itpub.net/69990629/viewspace-2918602/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
中国开源软件推进联盟PG分会系列技术丛书《快速掌握PostgreSQL版本新特性》一书副主编。数据库技术专家。数据库认证讲师、恩墨学院数据库讲师。擅长MySQL数据库、PostgreSQL等开源数据库。拥有MySQL-OCP 、PostgreSQL-PGCM等数据库认证。

注册时间:2020-12-12

  • 博文量
    152
  • 访问量
    160713