通过终端停止 Mac 上的 postgreSQL 服务

问题描述 投票:0回答:9

当前运行 postgreSQL 9.4.5_2

我已经尝试过

pg_ctl stop -W -t 1 -s -D /usr/local/var/postgres -m f

通常没有消息就是好消息,但之后我会跑步

pg_ctl status -D /usr/local/var/postgres 

并获得

pg_ctl: server is running (PID: 536)

我也尝试过

pg_ctl restart -w -D /usr/local/var/postgres -c -m i

回复信息为:

waiting for server to shut down.......................... failed
pg_ctl: server does not shut down

我还检查了我的 /Library/LaunchDaemons/ 以了解为什么该服务在登录时启动,但到目前为止还没有运气。有人知道我下一步应该检查哪里吗?活动监视器中的强制退出也对我没有任何帮助。

macos postgresql pg launchctl
9个回答
66
投票

首先,检查您的操作系统是否正在运行brew(自制程序的缩写版本:[https://brew.sh/])。

要验证它,请在您的终端中运行:

酿造版本:

bash-3.2$> brew -v
Homebrew X.X.XX

如果它适合您,请考虑使用下一个

brew
子命令:

酿造服务

bash-3.2$ brew services
描述(摘自
man brew
帮助信息)
brew services [subcommand]
       Manage background services with macOS’ launchctl(1) daemon manager or
       Linux’s systemctl(1) service manager.
使用示例:
bash-3.2$ brew services list
Name                  Status  User    File
[email protected] none
postgresql@XX         started [LOCAL_USER] 
redis                 none
注意:验证您的 PostgreSQL 版本,格式为:
@XX
,当前服务状态:
[none|started|...]
停止服务

请,此命令将尝试停止您的服务。明智地使用它,确保您首先浏览了

brew services stop
文档,并正确确定了对环境的影响范围。

描述(摘自
man brew
帮助信息)
[sudo] brew services stop (formula|--all):
    Stop the service formula immediately and unregister it from launching at
login (or boot).
使用示例:
停止服务
brew services stop postgresql@15

大力提及@ChiaraSpencer (https://stackoverflow.com/users/14436643/ciara-spencer)。

干杯


27
投票

重新启动

sudo -u postgres pg_ctl -D /Library/PostgreSQL/11/data stop

21
投票

尝试过 sudo 和 su 但没有这样的运气。 刚刚发现这个图形用户界面

https://github.com/MaccaTech/postgresql-mac-preferences

如果有人可以帮助使用终端命令,我们将不胜感激,但在此之前 gui 将完成工作。


14
投票

有同样的问题,我在本地安装了 postgres,并想将其包装在 docker 容器中。

我通过 1) 卸载 postgres 2) 杀死 postgres 端口上的剩余进程彻底解决了这个问题。如果您不卸载,进程将重新启动并再次获取端口 - 查看您的 Brewfile 表单

brew bundle dump
以检查
restart_service: true
标志。

我推断,由于我使用的是容器,所以我应该不需要本地容器,但是!!注意,这将从您的系统中删除 postgres

brew uninstall postgres
...
lsof -i :5432 # this to find the PID for the process
kill - 9 <the PID you found at previous command> 

注意:如果您仍然想使用

psql
,您可以
brew install libpq
,并将 psql 添加到您的 PATH(命令输出显示要添加到
.zshrc
或类似内容中的内容)


8
投票

您可以使用此命令停止服务器

{pg_ctl -D /usr/local/var/postgres stop -s -m fast}

7
投票

我刚刚在 OS X Ventura 上安装了 Postgres 15,也不知道如何停止它。以下工作有效:

sudo -u postgres /Library/PostgreSQL/15/bin/pg_ctl -D /Library/PostgreSQL/15/data stop

2
投票

添加已经说明的解决方案:

如果您决定使用

pg_ctl
命令,请确保您以具有访问数据库/数据库服务器权限的用户身份执行该命令。

这意味着:

  • 您终端上当前登录的用户应该具有这些权限

  • 第一次运行:
$ sudo su <name_of_database_user>

pg_ctl -D /Library/PostgreSQL/<version_here>/data/ stop

启动命令也是如此。

信用:https://gist.github.com/kingbin/9435292 (基本上在 github 上托管了一个包含命令的文件,节省了我一些时间:^) )


2
投票

我有一个运行 Postgres 的流浪 docker 容器,但我已经忘记了。


2
投票

另一种可能的情况是当你通过 UI 安装 PostgreSQL 时,查找进程的命令是:

netstat -vanp tcp | grep 5432

然后你杀掉PID

kill -9 PID_FROM_netstat
© www.soinside.com 2019 - 2024. All rights reserved.