web-dev-qa-db-fra.com

Le serveur PostgreSQL ne s'arrête pas

Avoir un problème avec PostgreSQL sur Mac OS X 10.8.4. J'ai accidentellement fait brew rm postgresql --force pendant le fonctionnement du serveur postgres. Quand j'ai installé en utilisant brew install postgresql et a couru pg_ctl -D /usr/local/var/postgres start Je reçois:

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

quand je lance "ps -ef | grep postgres", je reçois:

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

quand j'essaie d'arrêter le serveur avec pg_ctl stop -D /usr/local/var/postgres -m fast ou pg_ctl -D /usr/local/var/postgres stop -mi Je reçois:

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

[~ # ~] éditer [~ # ~]

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

Gist of server.log: https://Gist.github.com/anonymous/6106182

73
Parker Hutchinson

s’avère que mon brew.plist pour postgres devait être déchargé et supprimé à ~/Library/LaunchAgents /. Après un redémarrage, tout va bien ... dernière question.

7
Parker Hutchinson

Avait le même problème, pg_ctl: server does not shut down. En outre, ps auxwww | grep postgres n'a montré aucun postgres en cours d'exécution, tandis que pg_ctl -D /usr/local/var/postgres status a montré que postgres est en cours d'exécution. Redémarrer mon Mac n'a pas aidé, je suis même allé jusqu'à réinitialiser SMC, mais cela SO Q/A m'a donné une idée de ce qu'il faut rechercher: les problèmes de brassage.

En suivant cette ligne de pensée, j'ai trouvé ceci utile article de blog , qui se résumait à suivre les commandes qui ont résolu ce problème pour moi:

$ brew services list
$ brew services restart postgresql

J'espère que cela aidera quelqu'un.

Mise à jour - Commande inconnue: services

Après un peu d'enquête suite à l'un des commentaires ('Commande inconnue: services'), j'ai découvert que les auteurs de Homebrew avaient décidé de retirer services du référentiel, vu que personne ne voulait conserver ce code.

Vous pouvez en lire plus à ce sujet ici et ici (tickets github associés).

Après avoir creusé un peu plus, j’ai trouvé this repo qui ajoute services sur macs.

Voici comment j'ai 'retourné' 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

Voici une autre solution suggérée: https://Apple.stackexchange.com/questions/150300/need-help-using-homebrew-services-command . Je n'ai pas vérifié moi-même, alors je ne sais pas si et comment cela fonctionne.

135
Neara

$ brew services list

$ brew services stop postgresql

Arrêter postgresql, mais cela peut prendre un certain temps → Arrêt réussi postgresql (étiquette: homebrew.mxcl.postgresql))

31
rust

J'ai eu un problème similaire. J'avais oublié que j'avais intégré 'lunchy' il y a quelques jours et que je l'utilisais comme wrapper de lancement pour initier un pliste ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist au démarrage. pg_ctl n'était pas efficace à cause de la ligne de code suivante <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>

Essayer de tuer le processus directement n'a pas fonctionné parce que je devais décharger le plist.

    launchctl unload homebrew.mxcl.postgresql.plist
12
user3155603

J'avais le même problème ... le retrait de l'agent de lancement a résolu le problème pour moi:

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

J'ai contourné cette erreur en utilisant la commande

pg_ctl stop -m immediate

pg_ctl start

Je n'avais pas besoin de décharger le plist de cette façon.

8
Elliott Harrison

Lors de l'utilisation de PostgreSQL installé par la brasserie, la commande suivante fonctionnait pour l'éteindre.

> brew services stop postgresql

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

Comme mentionné dans une autre réponse, parcourir la liste des processus, puis tuer tout ce qui est lié à postgres ne fonctionne pas , pas .

ps aux | grep postgres
kill $PID
6
Peter Lustig