PostgreSQL服务器不会停止

Par*_*son 76 postgresql macos terminal

在Mac OS X 10.8.4上遇到PostgreSQL的一些问题.brew rm postgresql --force当postgres服务器运行时我不小心做了.当我安装使用brew install postgresql并运行时,pg_ctl -D /usr/local/var/postgres start我得到:

pg_ctl: another server might be running; trying to start server anyway
server starting
FATAL:  lock file "postmaster.pid" already exists                                                                       
HINT:  Is another postmaster (PID 752) running in data directory "/usr/local/var/postgres"?
Run Code Online (Sandbox Code Playgroud)

当我运行"ps -ef | grep postgres"时,我得到:

501   752   235   0 12:42PM ??         0:00.01 /usr/local/opt/postgresql/bin/postgres -D /usr/local/var/postgres -r /usr/local/var/postgres/server.log
501   754   752   0 12:42PM ??         0:00.00 postgres: checkpointer process       
501   755   752   0 12:42PM ??         0:00.34 postgres: writer process       
501   756   752   0 12:42PM ??         0:00.02 postgres: wal writer process       
501   757   752   0 12:42PM ??         0:00.01 postgres: autovacuum launcher process       
501   758   752   0 12:42PM ??         0:00.01 postgres: stats collector process       
501   945   452   0 12:58PM ttys000    0:00.00 grep postgres
Run Code Online (Sandbox Code Playgroud)

当我尝试停止服务器pg_ctl stop -D /usr/local/var/postgres -m fastpg_ctl -D /usr/local/var/postgres stop -mi我得到:

waiting for server to shut down........................................... Failed
pg_ctl: server does not shut down
Run Code Online (Sandbox Code Playgroud)

编辑

which pg_ctl
/usr/local/bin/pg_ctl
pg_ctl --version
pg_ctl (PostgreSQL) 9.2.4
Run Code Online (Sandbox Code Playgroud)

要点server.log:https://gist.github.com/anonymous/6106182

Nea*_*ara 140

有同样的问题,pg_ctl: server does not shut down.此外,ps auxwww | grep postgres没有显示postgres运行,同时pg_ctl -D /usr/local/var/postgres status显示postgres正在运行.重新启动我的Mac并没有帮助,我甚至还要重置SMC,但是这个SO Q/A让我知道下一步该寻找什么:酿造问题.

按照这一思路,我发现这篇有用的博客文章,归结为以下命令为我解决了这个问题:

$ brew services list
$ brew services restart postgresql
Run Code Online (Sandbox Code Playgroud)

希望这会对某人有所帮助.

更新 - 未知命令:服务

在根据其中一条评论('未知命令:服务')进行了一些调查之后,我发现Homebrew的作者决定services从回购中删除,因为没有人想要维护这段代码.

你可以在这里这里(相关的github门票)阅读更多相关信息.

经过一番挖掘,我发现这个回购添加services了macs.

这就是我'返回'的方式services:

~ » brew tap gapple/services
~ » brew services
usage: [sudo] brew services [--help] <command> [<formula>]

Small wrapper around `launchctl` for supported formulae, commands available:
   cleanup Get rid of stale services and unused plists
   list    List all services managed by `brew services`
   restart Gracefully restart selected service
   start   Start selected service
   stop    Stop selected service

Options, sudo and paths:

  sudo   When run as root, operates on /Library/LaunchDaemons (run at boot!)
  Run at boot:  /Library/LaunchDaemons
  Run at login: /Users/user/Library/LaunchAgents
Run Code Online (Sandbox Code Playgroud)

这是另一个建议的解决方案:https://apple.stackexchange.com/questions/150300/need-help-using-homebrew-services-command.没有自己检查,所以不知道它是否以及如何工作.

  • 这已经淘汰了我多年来为完成同样的事情积累的那么多bash别名.好看! (4认同)
  • @naturalc更新了我的回答以回应您的评论.告诉我它是否适合你. (2认同)

rus*_*ust 35

$ brew services list

$ brew services stop postgresql

停止postgresql,但可能需要一段时间==>成功停止postgresql(标签:homebrew.mxcl.postgresql)

  • 尝试用 `pg_ctl ... stop` 停止但无济于事。一旦我运行 brew services stop postgresql,我的 pg_ctl...stop 现在再次按预期工作。不知道如何,但我很高兴这解决了它! (2认同)
  • 我需要添加版本。`brew 服务停止 postgresql@10` (2认同)

小智 12

我有类似的问题.我忘记了几天前我整合了'吃午餐'并且正在使用它作为启动包装器来启动plist ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist.由于以下代码行,pg_ctl无效<key>KeepAlive<key>:

      <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
     3 <plist version="1.0">
     4 <dict>
     5   <key>KeepAlive</key>
     6   <true/>
     7   <key>Label</key>
     8   <string>homebrew.mxcl.postgresql</string>
     9   <key>ProgramArguments</key>
    10   <array>
    11     <string>/usr/local/opt/postgresql/bin/postgres</string>
    12     <string>-D</string>
    13     <string>/usr/local/var/postgres</string>
    14     <string>-r</string>
    15     <string>/usr/local/var/postgres/server.log</string>
    16   </array>
    17   <key>RunAtLoad</key>
    18   <true/>
    19   <key>WorkingDirectory</key>
    20   <string>/usr/local</string>
    21   <key>StandardErrorPath</key>
    22   <string>/usr/local/var/postgres/server.log</string>
    23 </dict>
    24 </plist>
Run Code Online (Sandbox Code Playgroud)

试图直接杀死进程不起作用,因为我需要卸载plist.

    launchctl unload homebrew.mxcl.postgresql.plist
Run Code Online (Sandbox Code Playgroud)


小智 11

我遇到了同样的问题...删除启动代理为我解决了问题:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
rm ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Run Code Online (Sandbox Code Playgroud)

  • 这一点很到位。标准自制停止服务命令拒绝工作。 (2认同)
  • 这对我有用,而“brew services stop postgresql”和“brew services stop postgresql@10”对我不起作用。 (2认同)

Par*_*son 8

原来我的brew.plist for postgres需要卸载并删除〜/ Library/LaunchAgents /.重启后一切都很好......结束问题.

  • 请扩展这个 (5认同)

小智 8

我使用该命令解决了这个错误

pg_ctl stop -m immediate

pg_ctl start
Run Code Online (Sandbox Code Playgroud)

我不需要以这种方式卸载plist.

  • 我得到pg_ctl:没有指定数据库目录,环境变量PGDATA未设置 (5认同)
  • @SuperUberDuper 您应该添加 -D 并指定数据库位置。例如: pg_ctl stop -m 立即 -D 。“。” 代表当前目录,假设您在数据库目录中 (2认同)

Pet*_*tig 6

当依赖brew安装的PostgreSQL时,以下命令可用于关闭它.

> brew services stop postgresql

stopping `postgresql`... (might take a while)
==> Successfully stopped `postgresql` (label: homebrew.mxcl.postgresql)
Run Code Online (Sandbox Code Playgroud)

作为另一个答案通过进程列表grepping提到的,然后杀死任何Postgres的相关并没有工作.

ps aux | grep postgres
kill $PID
Run Code Online (Sandbox Code Playgroud)