Il server PostgreSQL non si fermerà


88

Problemi con PostgreSQL su Mac OS X 10.8.4. L'ho fatto accidentalmente brew rm postgresql --forcementre il server postgres era in esecuzione. Quando ho installato utilizzando brew install postgresqled eseguito, pg_ctl -D /usr/local/var/postgres startottengo:

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

quando eseguo "ps -ef | grep postgres" ottengo:

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

quando provo ad arrestare il server con pg_ctl stop -D /usr/local/var/postgres -m fasto pg_ctl -D /usr/local/var/postgres stop -miottengo:

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

MODIFICARE

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

Sintesi di server.log: https://gist.github.com/anonymous/6106182


1
Va pg_ctl -D /usr/local/var/postgres stop -m immediateoltre gli altri due tentativi?
bma

Sarebbe lo stesso che in esecuzione pg_ctl -D /usr/local/var/postgres stop -mie sì, tutto quello che ottengo è "Il server non si spegne"
Parker Hutchinson,

Lo immaginavo, ma una rapida occhiata a postgres --helpnon ha mostrato immediatamente la bandiera "m".
bma

brew reinstall postgresql stackoverflow.com/a/39781473/6086226 ha funzionato per me
Derk Jan Speelman

Risposte:


164

Ha avuto lo stesso problema, pg_ctl: server does not shut down. Inoltre, ps auxwww | grep postgresnon ha mostrato alcun postgres in esecuzione, mentre ha pg_ctl -D /usr/local/var/postgres statusmostrato che postgres è in esecuzione. Il riavvio del mio Mac non ha aiutato, sono persino arrivato al punto di ripristinare SMC, ma questa domanda / risposta SO mi ha dato un'idea di cosa cercare dopo: problemi di birra.

Seguendo questa linea di pensiero, ho trovato questo utile post sul blog , che si è ridotto ai seguenti comandi che hanno risolto questo problema per me:

$ brew services list
$ brew services restart postgresql

Spero che questo possa aiutare qualcuno.

Aggiornamento: comando sconosciuto: servizi

Dopo un po 'di indagine a seguito di uno dei commenti (' Comando sconosciuto: servizi '), ho scoperto che gli autori di Homebrew hanno deciso di rimuovere servicesdal repository, visto che nessuno vuole mantenere questo codice.

Puoi leggere di più a riguardo qui e qui (biglietti github correlati).

Dopo qualche altra ricerca, ho trovato questo repository che aggiunge servicessu Mac.

Ecco come sono 'tornato' 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

Ecco un'altra soluzione suggerita: /apple/150300/need-help-using-homebrew-services-command . Non l'ho controllato da solo, quindi non so se e come funziona.


4
Questo rende obsoleti così tanti alias bash che ho accumulato negli anni per aver fatto la stessa identica cosa. Bell'aspetto!
Alex Kestner

2
@naturalc ha aggiornato la mia risposta in risposta al tuo commento. dimmi se funziona bene per te.
Neara

1
Ha risolto il problema per me. Grazie!
TotoroTotoro

Per qualsiasi Rails utenti là fuori, stavo cercando Postgres fermata di Via del solito comando Rake, bundle exec rake pg:stop. Ma non funzionava, portando a pg_ctl: server does not shut down. La soluzione alternativa ha brew services restart postgresqlfunzionato per me. 👌
zbeat

Grazie uomo! Non riuscivo a immaginare che fosse effettivamente un servizio homebrew in esecuzione. Ben fatto!
Adrian Grzywaczewski

57

$ brew services list

$ brew services stop postgresql

Arresto postgresql, ma potrebbe volerci del tempo → Arrestato con successo postgresql(etichetta: homebrew.mxcl.postgresql)


2
Ho provato a fermarmi pg_ctl ... stopsenza alcun risultato. Dopo aver eseguito brew services stop postgresql, il mio pg_ctl ... stop funziona di nuovo come previsto. Non sono sicuro di come, ma sono contento che questo l'abbia risolto!
Iggy

Avevo bisogno di aggiungere la versione con esso. brew services stop postgresql@10
Ivor Scott

12

Ho avuto un problema simile. Avevo dimenticato di aver integrato "lunchy" qualche giorno fa e lo stavo usando come wrapper launchctl per avviare plist ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plistall'avvio. pg_ctl non era efficace a causa della seguente riga di codice <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>

Il tentativo di terminare il processo direttamente non ha funzionato perché avevo bisogno di scaricare il plist.

    launchctl unload homebrew.mxcl.postgresql.plist

Tieni presente che il file .plist potrebbe non avere lo stesso nome. Nel mio caso lo era homebrew.mxcl.postgresql92.plist. Controllati.
MCP

12

Avevo lo stesso problema ... la rimozione dell'agente di avvio ha risolto il problema per me:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
rm ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

10

Ho aggirato questo errore utilizzando il comando

pg_ctl stop -m immediate

pg_ctl start

Non avevo bisogno di scaricare il plist in questo modo.


5
Ottengo pg_ctl: nessuna directory del database specificata e variabile di ambiente PGDATA non impostata
SuperUberDuper,

1
ottenendo lo stesso errore: nessuna directory del database specificata e variabile di ambiente PGDATA non impostata
jjj

2
@SuperUberDuper È necessario aggiungere -D e specificare la posizione del database. Ad esempio: pg_ctl stop -m immediate -D. "." sta per la directory corrente, supponendo che tu sia nella directory del database
Hatzil

8

risulta che il mio brew.plist per postgres doveva essere scaricato e rimosso in ~ / Library / LaunchAgents /. Dopo un riavvio tutto va bene ... domanda conclusiva.


7
si prega di espandere su questo
SuperUberDuper

7

Quando ci si affida a PostgreSQL installato da brew, il seguente comando ha funzionato per spegnerlo.

> brew services stop postgresql

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

Come accennato in un'altra risposta, sfogliare l'elenco dei processi e poi uccidere qualsiasi cosa relativa a postgres non funziona.

ps aux | grep postgres
kill $PID

0

Non ho postgresiniziato tramite brew services, quindi non potevo fermarlo in questo modo.

Questo ha funzionato.

$ 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

Usa il -Dparametro dall'alto.

$ pg_ctl stop -D "/Users/username/Library/Application Support/Postgres/var-9.6"
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.