Déterminer le port de PostgreSQL


12

Je sais que par défaut PostgreSQL écoute sur le port 5432, mais quelle est la commande pour déterminer réellement le port de PostgreSQL?

Configuration: Ubuntu 9.10 avec PostgreSQL 8.4

Réponses:


26

lsof et nmap sont des solutions, mais elles ne sont pas installées par défaut. Ce que vous voulez, c'est netstat (8).

sudo netstat -plunt |grep postgres

Linux est censé migrer loin de route / ifconfig / netstat. La commande moderne équivalente est ss -plung|grep postgres(note, mêmes drapeaux)
ptman

1
Il n'y ga plus de drapeau pour la sscommande. Essayez:ss -pa |grep postgresql
GrayedFox

1
@GrayedFox merci pour la mise à jour, mais pour moi, cela donne le nom du port, pas le numéro, donc je pense que ss -pan |grep postgresc'est plus approprié
ptman

6

L'utilitaire PostgreSQL pg_lsclusters affiche des informations sur la configuration et l'état de tous les clusters, y compris le numéro de port.

$ 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

Cela présente également l'avantage de ne pas nécessiter de privilèges «sudo» pour s'exécuter.

Sur les systèmes Debian et Ubuntu, la commande pg_lsclusters est fournie par le package postgresql-common, qui doit être installé par défaut avec le serveur postgresql.


3
Notez que pg_lsclustersc'est un Ubuntu-ism, et n'est pas une commande Postgres standard. Cela fonctionnera pour ce cas, mais ce n'est pas une solution polyvalente ...
voretaq7

2

Si vous voulez le faire depuis l'intérieur de la base de données, faites simplement "SHOW port". Mais cela suppose que vous avez pu vous y connecter, au moins localement ...


1

Si vous recherchez sur la machine locale, j'utiliserais la commande lsof pour vérifier le port utilisé par postgresql

lsof -p <postgres_process_id>

Vous devrez peut-être l'exécuter en tant que root.
Michael Mior

1

J'ai des machines avec plusieurs instances postgres en cours d'exécution - et j'ai donc également le problème d'essayer de faire correspondre la base de données correcte avec chaque port. J'ai tendance à faire:

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

Et puis, pour chacune des instances renvoyées, recherchez le répertoire ( -Dargument) et:

$ sudo grep port $DIR/postgresql.conf

0

Voici une solution que j'ai trouvée:

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

Si vous souhaitez rechercher une machine non locale, changez simplement localhostl'adresse IP du serveur.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.