我有一个监控脚本(以非特权用户身份运行),需要检查当前在同一主机(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