Подтвердить что ты не робот

Сервер PostgreSQL не остановится

Немного о проблеме с PostgreSQL в Mac OS X 10.8.4. Я случайно сделал 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"?

когда я запускаю "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

когда я пытаюсь остановить сервер с помощью pg_ctl stop -D /usr/local/var/postgres -m fast или pg_ctl -D /usr/local/var/postgres stop -mi, я получаю:

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

ИЗМЕНИТЬ

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

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

4b9b3361

Ответ 1

выясняется, что мой brew.plist для postgres необходимо было выгрузить и удалить в ~/Library/LaunchAgents/. После перезагрузки все хорошо... вопрос закрытия.

Ответ 2

Была такая же проблема, pg_ctl: server does not shut down. Кроме того, ps auxwww | grep postgres не показывал постгрев, а pg_ctl -D /usr/local/var/postgres status показывал, что postgres запущен. Перезагрузка моего mac не помогла, я даже дошел до reset SMC, но этот SO Q/A дал мне представление о том, что искать дальше: brew проблемы.

Следуя этой мысли, я нашел этот полезный пост в блоге, который пришел к следующим командам, которые решили эту проблему для меня:

$ brew services list
$ brew services restart postgresql

Надеюсь, это поможет кому-то.

Обновление - Неизвестная команда: службы

После небольшого расследования, следующего за одним из комментариев ( "Неизвестная команда: службы" ), я узнал, что авторы Homebrew решили удалить services из репо, увидев, что никто не хочет поддерживать этот код.

Подробнее об этом можно узнать здесь и здесь (связанные билеты github).

После некоторого дополнительного копирования я нашел этот репо, который добавляет services к макам.

Вот как я "вернулся" 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

Вот еще одно предлагаемое решение: https://apple.stackexchange.com/questions/150300/need-help-using-homebrew-services-command. Не проверял сам, поэтому не знаю, как и как это работает.

Ответ 3

$ brew services list

$ brew services stop postgresql

Остановка postgresql, но это может занять некоторое время → Успешно остановлено postgresql (метка: homebrew.mxcl.postgresql)

Ответ 4

У меня была аналогичная проблема. Я забыл, что несколько дней назад я включил "завтрак" и использовал это как оболочка launchctl для запуска 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>

Попытка убить процесс напрямую не работала, потому что мне нужно было выгрузить plist.

    launchctl unload homebrew.mxcl.postgresql.plist

Ответ 5

У меня была та же проблема... удаление агента запуска решило проблему для меня:

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

Ответ 6

Я обошел эту ошибку, используя команду

pg_ctl stop -m immediate

pg_ctl start

Мне не нужно было выгружать plist таким образом.

Ответ 7

При использовании установленного brew PostgreSQL следующая команда работала для его выключения.

> brew services stop postgresql

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

Как упоминалось в другом ответе, просмотр списка процессов и последующее уничтожение всего, что связано с postgres, не работает.

ps aux | grep postgres
kill $PID