确定PostgreSQL的端口


12

我知道默认情况下PostgreSQL侦听端口5432,但是实际上确定PostgreSQL端口的命令是什么?

配置: Ubuntu 9.10和PostgreSQL 8.4

Answers:


26

lsof和nmap是解决方案,但默认情况下未安装它们。您想要的是netstat(8)。

sudo netstat -plunt |grep postgres

据说Linux正在从route / ifconfig / netstat迁移。等效的现代命令是ss -plung|grep postgres(请注意,相同的标志)
ptman

1
gss命令不再有标志。试试: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主义,而不是标准的Postgres命令。它适用于这种情况,但不是通用解决方案...
voretaq7

2

如果要从数据库内部执行此操作,只需执行“ SHOW port”即可。但这假设您已经能够连接到它,至少在本地...


1

如果在本地计算机上搜索,我将使用lsof命令来检查postgresql正在使用的端口

lsof -p <postgres_process_id>

您可能必须以root用户身份运行。
Michael Mior 2010年

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

如果要搜索非本地计算机,只需更改localhost为服务器的IP地址即可。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.