Назад | Перейти на главную страницу

Как найти порты всех запущенных экземпляров PostgreSQL (как пользователь без полномочий root)

У меня есть сценарий мониторинга (работающий от имени непривилегированного пользователя), который должен проверять все экземпляры 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