Я знаю, что по умолчанию PostgreSQL прослушивает порт 5432, но какая команда на самом деле определяет порт PostgreSQL?
Конфигурация: Ubuntu 9.10 с PostgreSQL 8.4
lsof и nmap - это решения, но они не установлены по умолчанию. Вам нужен netstat (8).
sudo netstat -plunt |grep postgres
Утилита PostgreSQL pg_lsclusters показывает информацию о конфигурации и состоянии всех кластеров, включая номер порта.
$ pg_lsclusters
Version Cluster Port Status Owner Data directory Log file
8.4 main 5433 online postgres /var/lib/postgresql/8.4/main /var/log/postgresql/postgresql-8.4-main.log
Это также имеет то преимущество, что для запуска не требуются привилегии sudo.
В системах Debian и Ubuntu команда pg_lsclusters предоставляется пакетом postgresql-common, который должен быть установлен по умолчанию с сервером postgresql.
Если вы хотите сделать это из базы данных, просто выполните «ПОКАЗАТЬ порт». Но это предполагает, что вы смогли подключиться к нему, по крайней мере, локально ...
Если вы ищете на локальном компьютере, я бы использовал команду lsof, чтобы проверить порт, который использует postgresql.
lsof -p <postgres_process_id>
У меня есть машины с несколькими запущенными экземплярами postgres, поэтому у меня также есть проблема с попыткой сопоставить правильную базу данных с каждым портом. Я обычно делаю:
$ ps aux | grep postgres | grep -v 'postgres:'
Затем для каждого возвращенного экземпляра найдите каталог (-D
аргумент) и:
$ sudo grep port $DIR/postgresql.conf
Вот одно решение, которое я нашел:
sudo apt-get install nmap
sudo nmap localhost | grep postgresql
Если вы хотите выполнить поиск на нелокальном компьютере, просто измените localhost
на IP-адрес сервера.