如何查找所有正在运行的 PostgreSQL 实例的端口(作为非 root 用户)

如何查找所有正在运行的 PostgreSQL 实例的端口(作为非 root 用户)

我有一个监控脚本(以非特权用户身份运行),需要检查当前在同一主机(Ubuntu Linux 18.04)上运行的所有 Postgres 实例。有没有简单的方法可以找到它们的所有端口号?

我正在考虑列出所有匹配的文件/var/run/postgresql/.s.PGSQL.*,但我不确定这是否可靠或是否是最简单的方法。

答案1

使用 Debian/Ubuntu 的一个简单方法是使用pg_lsclusters(由软件包提供postgresql-common)。此命令列出集群及其端口、状态和其他信息:

$ pg_lsclusters
Ver 集群端口状态所有者数据目录日志文件
11 main 5433 在线 postgres /var/lib/postgresql/11/main /var/log/postgresql/postgresql-11-main.log
12 main 5432 在线 postgres /var/lib/postgresql/12/main /var/log/postgresql/postgresql-12-main.log

$ 端口 = $(pg_lsclusters --no-header | awk'{打印 $3; }')

$ echo $ports
5433 5432

答案2

可能是这样的:

 ss -xpntl| grep postmaster

相关内容