29

I know that by default PostgreSQL listens on port 5432, but what is the command to actually determine PostgreSQL's port?

Configuration: Ubuntu 9.10 with PostgreSQL 8.4

voretaq7
  • 80,749

6 Answers6

41

lsof and nmap are solutions, but they're not installed by default. What you want is netstat(8).

sudo netstat -plunt |grep postgres

And if you don't have netstat, but have ss

sudo ss -pln |grep postgres
ptman
  • 29,862
16

The PostgreSQL utility pg_lsclusters shows information about the configuration and status of all clusters, including the port number.

$ 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

This also has the advantage of not requiring 'sudo' privileges to run.

On Debian and Ubuntu systems, the pg_lsclusters command is provided by the package postgresql-common, which should be installed by default with the postgresql server.

5

If you want to do it from inside the database, just do "SHOW port". But that assumes you've been able to connect to it, at least locally...

2

If you are searching on the local machine, I would use the lsof command to check for the port postgresql is using

lsof -p <postgres_process_id>
Dominik
  • 2,248
2

I have machines with multiple postgres instances running -- and so I also have the issue of trying to match up the correct database with each port. I tend to do:

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

And then, for each of instances returned look for the directory (-D argument) and:

$ sudo grep port $DIR/postgresql.conf
Joe H.
  • 1,937
1

Here's one solution that I've found:

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

If you're wanting to search a non-local machine, just change localhost to the server's IP address.