El servidor PostgreSQL no se detiene

87

Tener un pequeño problema con PostgreSQL en Mac OS X 10.8.4. Lo hice accidentalmente brew rm postgresql --forcemientras el servidor de Postgres se estaba ejecutando. Cuando instalé usando brew install postgresqly ejecuté pg_ctl -D /usr/local/var/postgres start, obtengo:

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"?

cuando ejecuto "ps -ef | grep postgres" obtengo:

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

cuando intento detener el servidor con pg_ctl stop -D /usr/local/var/postgres -m fasto pg_ctl -D /usr/local/var/postgres stop -miobtengo:

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

EDITAR

which pg_ctl
/usr/local/bin/pg_ctl
pg_ctl --version
pg_ctl (PostgreSQL) 9.2.4

Síntesis de server.log: https://gist.github.com/anonymous/6106182

Parker Hutchinson
fuente
1
¿ pg_ctl -D /usr/local/var/postgres stop -m immediateLlega más lejos que los otros dos intentos?
bma
Eso sería lo mismo que correr pg_ctl -D /usr/local/var/postgres stop -miy sí, todo lo que obtengo es "El servidor no se apaga"
Parker Hutchinson
Supuse eso, pero un vistazo rápido a postgres --helpno mostró inmediatamente la bandera "m".
bma
brew reinstall postgresql stackoverflow.com/a/39781473/6086226 funcionó para mí
Derk Jan Speelman

Respuestas:

162

Tenía el mismo problema pg_ctl: server does not shut down. Además, ps auxwww | grep postgresno mostró postgres en ejecución, mientras pg_ctl -D /usr/local/var/postgres statusque mostró que postgres se está ejecutando. Reiniciar mi Mac no ayudó, incluso fui tan lejos como para restablecer SMC, pero este SO Q / A me dio una idea de qué buscar a continuación: problemas de preparación.

Siguiendo esta línea de pensamiento, encontré esta útil publicación de blog , que se redujo a los siguientes comandos que resolvieron este problema para mí:

$ brew services list
$ brew services restart postgresql

Espero que esto ayude a alguien.

Actualización - Comando desconocido: servicios

Después de investigar un poco después de uno de los comentarios ('Comando desconocido: servicios'), descubrí que los autores de Homebrew decidieron eliminarlo servicesdel repositorio, ya que nadie quiere mantener este código.

Puede leer más sobre esto aquí y aquí (entradas de github relacionadas).

Después de investigar un poco más, encontré este repositorio que agrega servicesen macs.

Así es como 'regresé' 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

Aquí hay otra solución sugerida: /apple/150300/need-help-using-homebrew-services-command . No lo comprobé yo mismo, así que no sé si funciona ni cómo funciona.

Cerca de
fuente
4
Esto deja obsoletos tantos alias de bash que he acumulado a lo largo de los años para hacer exactamente lo mismo. ¡Buen aspecto!
Alex Kestner
2
@naturalc actualizó mi respuesta en respuesta a su comentario. dime si te funciona bien.
Neara
1
Me resolvió el problema. ¡Gracias!
TotoroTotoro
Para cualquier Rails usuarios por ahí, yo estaba tratando de Postgres parada a través de comandos de costumbre rastrillo, bundle exec rake pg:stop. Pero eso no estaba funcionando, conduciendo a pg_ctl: server does not shut down. La solución brew services restart postgresqlme funcionó. 👌
zbeat
¡Gracias hombre! No podía imaginarme que en realidad se estuviera ejecutando un servicio casero. ¡Buena esa!
Adrian Grzywaczewski
54

$ brew services list

$ brew services stop postgresql

Parada postgresql , pero puede tardar un poco → Detenido correctamente postgresql(etiqueta: homebrew.mxcl.postgresql)


fuente
2
Intenté detenerme pg_ctl ... stopsin éxito. Una vez que ejecuté brew services stop postgresql, mi pg_ctl ... stop funciona como se esperaba nuevamente. No estoy seguro de cómo, ¡pero me alegro de que esto lo haya resuelto!
Iggy
Necesitaba agregar la versión con él. brew services stop postgresql@10
Ivor Scott
12

Tuve un problema similar. Había olvidado que había integrado 'lunchy' hace unos días y lo estaba usando como contenedor de launchctl para iniciar plist.~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist en el inicio. pg_ctl no fue efectivo debido a la siguiente línea de código <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>

Intentar matar el proceso directamente no funcionó porque necesitaba descargar el plist.

    launchctl unload homebrew.mxcl.postgresql.plist
usuario3155603
fuente
Tenga en cuenta que es posible que el archivo .plist no tenga exactamente el mismo nombre. En mi caso lo fue homebrew.mxcl.postgresql92.plist. Chequéalo tú mismo.
MCP
12

Estaba teniendo el mismo problema ... eliminar el agente de lanzamiento resolvió el problema por mí:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
rm ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Max Bentata
fuente
9

Superé este error usando el comando

pg_ctl stop -m immediate

pg_ctl start

No necesitaba descargar el plist de esta manera.

Elliott Harrison
fuente
5
Obtengo pg_ctl: no se especificó un directorio de base de datos y la variable de entorno PGDATA no se configuró
SuperUberDuper
1
obteniendo el mismo error: no se especificó el directorio de la base de datos y la variable de entorno PGDATA no se configuró
jjj
2
@SuperUberDuper Debe agregar -D y especificar la ubicación de la base de datos. Por ejemplo: pg_ctl detener -m inmediato -D. "." representa el directorio actual, asumiendo que está en el directorio de la base de datos
Hatzil
8

resulta que mi brew.plist para postgres necesitaba ser descargado y eliminado en ~ / Library / LaunchAgents /. Después de un reinicio todo está bien ... pregunta final.

Parker Hutchinson
fuente
7
por favor amplíe esto
SuperUberDuper
7

Al confiar en PostgreSQL instalado con brebaje, el siguiente comando funcionó para apagarlo.

> brew services stop postgresql

stopping `postgresql`... (might take a while)
==> Successfully stopped `postgresql` (label: homebrew.mxcl.postgresql)

Como se mencionó en otra respuesta, revisar la lista de procesos y luego eliminar cualquier cosa relacionada con Postgres no funciona.

ps aux | grep postgres
kill $PID
Peter Lustig
fuente
0

No habia postgresempezado viabrew services , así que no pude detenerlo de esa manera.

Esto funcionó.

$ ps -ef | grep postgres
501   547     1   0  2:07pm ??         0:00.29 /Applications/Postgres.app/Contents/Versions/9.6/bin/postgres -D /Users/username/Library/Application Support/Postgres/var-9.6 -p 5432

Utilice el -Dparámetro de arriba.

$ pg_ctl stop -D "/Users/username/Library/Application Support/Postgres/var-9.6"
M3RS
fuente