Определение порта PostgreSQL


12

Я знаю, что по умолчанию PostgreSQL прослушивает порт 5432, но какая команда фактически определяет порт PostgreSQL?

Конфигурация: Ubuntu 9.10 с PostgreSQL 8.4

Ответы:


26

lsof и nmap являются решениями, но они не установлены по умолчанию. То, что вы хотите, это netstat (8).

sudo netstat -plunt |grep postgres

Linux предположительно мигрирует от маршрута / ifconfig / netstat. Эквивалентная современная команда - ss -plung|grep postgres(обратите внимание, те же флаги)
ptman

1
Для команды больше нет gфлага ss. Попробуйте:ss -pa |grep postgresql
GrayedFox

1
@GrayedFox спасибо за обновление, но для меня это дает название порта, а не номер, поэтому я думаю, что ss -pan |grep postgresбольше подходит
ptman

6

Утилита 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.


3
Обратите внимание, что pg_lsclustersэто Ubuntu-ism, а не стандартная команда Postgres. Это будет работать для этого случая, но не является универсальным решением ...
voretaq7

2

Если вы хотите сделать это из базы данных, просто сделайте «ПОКАЗАТЬ порт». Но это предполагает, что вы смогли подключиться к нему, по крайней мере, локально ...


1

Если вы ищете на локальном компьютере, я бы использовал команду lsof для проверки порта, который использует postgresql

lsof -p <postgres_process_id>

Возможно, вам придется запустить это как root.
Майкл Миор

1

У меня есть машины с несколькими запущенными экземплярами postgres, и поэтому у меня также есть проблема с попыткой сопоставить правильную базу данных с каждым портом. Я склонен делать:

$ ps aux | grep  postgres | grep -v 'postgres:'

И затем для каждого возвращенного экземпляра ищите каталог ( -Dаргумент) и:

$ sudo grep port $DIR/postgresql.conf

0

Вот одно решение, которое я нашел:

sudo apt-get install nmap
sudo nmap localhost | grep postgresql

Если вы хотите искать нелокальный компьютер, просто измените localhostIP-адрес сервера.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.