Bestimmen des PostgreSQL-Ports

11

Ich weiß, dass PostgreSQL standardmäßig Port 5432 überwacht, aber wie lautet der Befehl, um den Port von PostgreSQL tatsächlich zu bestimmen?

Konfiguration: Ubuntu 9.10 mit PostgreSQL 8.4

Matthew Rankin
quelle

Antworten:

24

lsof und nmap sind Lösungen, aber nicht standardmäßig installiert. Was Sie wollen, ist netstat (8).

sudo netstat -plunt |grep postgres
ptman
quelle
Linux migriert angeblich von route / ifconfig / netstat weg. Der äquivalente moderne Befehl ist ss -plung|grep postgres(Anmerkung, gleiche Flags)
ptman
1
Es gibt kein gFlag mehr für den ssBefehl. Versuchen Sie:ss -pa |grep postgresql
GrayedFox
1
@GrayedFox danke für das Update, aber für mich gibt das den Namen des Ports, nicht die Nummer, so denke ich ss -pan |grep postgresist besser geeignet
ptman
6

Das PostgreSQL-Dienstprogramm pg_lsclusters zeigt Informationen zur Konfiguration und zum Status aller Cluster an, einschließlich der Portnummer.

$ 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

Dies hat auch den Vorteil, dass für die Ausführung keine Sudo-Berechtigungen erforderlich sind.

Auf Debian- und Ubuntu-Systemen wird der Befehl pg_lsclusters vom Paket postgresql-common bereitgestellt, das standardmäßig auf dem postgresql-Server installiert werden sollte.

Dan Stangel
quelle
3
Beachten Sie, dass dies pg_lsclustersein Ubuntu-Ismus ist und kein Standardbefehl von Postgres. Es wird für diesen Fall funktionieren, ist aber keine Allzwecklösung ...
voretaq7
2

Wenn Sie dies aus der Datenbank heraus tun möchten, führen Sie einfach "SHOW port" aus. Dies setzt jedoch voraus, dass Sie zumindest lokal eine Verbindung herstellen konnten ...

Magnus Hagander
quelle
1

Wenn Sie auf dem lokalen Computer suchen, würde ich den Befehl lsof verwenden, um zu überprüfen, welchen Port postgresql verwendet

lsof -p <postgres_process_id>
Dominik
quelle
Möglicherweise müssen Sie dies als root ausführen.
Michael Mior
1

Ich habe Computer mit mehreren Postgres-Instanzen ausgeführt - und daher habe ich auch das Problem, die richtige Datenbank mit jedem Port abzugleichen. Ich neige dazu zu tun:

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

Suchen Sie dann für jede zurückgegebene Instanz nach dem Verzeichnis ( -DArgument) und:

$ sudo grep port $DIR/postgresql.conf
Joe H.
quelle
0

Hier ist eine Lösung, die ich gefunden habe:

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

Wenn Sie einen nicht lokalen Computer durchsuchen möchten, ändern Sie einfach localhostdie IP-Adresse des Servers.

Matthew Rankin
quelle