11

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

24

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

sudo netstat -plunt |grep postgres
  • Linux is supposedly migrating away from route/ifconfig/netstat. The equivalent modern command is ss -plung|grep postgres (note, same flags) – ptman Feb 22 '17 at 12:11
  • 1
    There is no g flag anymore for the ss command. Try: ss -pa |grep postgresql – GrayedFox Jun 14 '18 at 8:06
  • 1
    @GrayedFox thanks for the update, but for me that gives the name of the port, not the number, so I think ss -pan |grep postgres is more suitable – ptman Jun 14 '18 at 12:58
6

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.

  • 3
    Note that pg_lsclusters is an Ubuntu-ism, and is not a standard Postgres command. It will work for this case, but is not a general-purpose solution... – voretaq7 Oct 11 '12 at 20:45
2

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...

1

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>
  • You may have to run this as root. – Michael Mior Mar 1 '10 at 15:19
1

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
0

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.