У меня есть сценарий мониторинга (работающий от имени непривилегированного пользователя), который должен проверять все экземпляры Postgres, запущенные в настоящее время на том же хосте (Ubuntu Linux 18.04). Есть ли простой способ найти все их номера портов?
Я думал перечислить все файлы, соответствующие /var/run/postgresql/.s.PGSQL.*
но я не уверен, надежный это или самый простой способ.
Простой способ с Debian / Ubuntu - использовать pg_lsclusters
(как предусмотрено postgresql-common
пакет). Эта команда выводит список кластеров с портами, статусами и другой информацией:
$ pg_lsclusters Ver Cluster Port Status Owner Data directory Log file 11 main 5433 online postgres /var/lib/postgresql/11/main /var/log/postgresql/postgresql-11-main.log 12 main 5432 online postgres /var/lib/postgresql/12/main /var/log/postgresql/postgresql-12-main.log $ ports=$(pg_lsclusters --no-header | awk '{ print $3; }') $ echo $ports 5433 5432
Может быть примерно так:
ss -xpntl| grep postmaster