2017-06-01 85 views
1

我已經搜索瞭如何關閉psql端口一段時間,但大多數答案都在談論關閉psql命令行使用\q,這不是我正在尋找的。如何釋放psql端口?

我的問題是,我的筆記本電腦上的postgresql正在運行並偵聽端口5432,但我想將端口5432用於其他用途。通常我運行netstat -plnt找到殺死進程,但在這種情況下,正在偵聽端口5432的進程沒有進程ID ...

關於如何釋放端口5432的任何想法?

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN -

+0

您希望運行netstat命令* root *(帶'sudo')以便查看* PID *和* ProgramName * –

+0

您可以編輯'/ etc/postgresql .../.../main/postgresql.conf'來更改* port *編號。 –

回答

1

psql是連接到Postgres的服務器的客戶端。與\q關閉連接剛剛結束會話。當它發生時,該會話的後端停止,因此通過關閉連接,您只能在服務器上釋放pid。並且服務器繼續監聽端口5432.

如果您想要停止偵聽端口5432,可以使用pg_ctl stop停止postgres服務器,甚至可以在postgres.conf中爲其分配不同的端口,以便您可以在兩個程序中運行這兩個程序平行

更新 如果從包(Ubuntu的/ Debian的/的Fedora/RHEL/CentOS的/等)安裝,你應該使用的系統服務管理器停止PostgreSQL的。例如在RHEL 7或Fedora中,sudo systemctl stop postgresql-9.6(或任何您的版本),而不是pg_ctl(引用Craig Ringer)

+0

當我運行'pg_ctl stop'時,它給了我一個錯誤'pg_ctl:command not found' –

+0

'find/-name pg_ctl'作爲root應該有幫助 –

+0

如果你從軟件包(Ubuntu/Debian/Fedora/RHEL/CentOS /等等)你應該使用系統服務管理器來停止postgresql。例如在RHEL 7或Fedora中,'sudo systemctl stop postgresql-9.6'(或者你的版本是什麼)而不是pg_ctl –