Сервер 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
EDIT
which pg_ctl
/usr/local/bin/pg_ctl
pg_ctl --version
pg_ctl (PostgreSQL) 9.2.4
суть server.log
: https://gist.github.com/anonymous/6106182
7 ответов:
была такая же проблема,
pg_ctl: server does not shut down
. Кроме того,ps auxwww | grep postgres
не показал никаких postgres работает, в то время какpg_ctl -D /usr/local/var/postgres status
показал, что postgres работает. Перезапуск моего mac не помог, я даже зашел так далеко, чтобы сбросить SMC, но это так Q/A дало мне идею, что искать дальше: проблемы с пивом.следуя этой мысли, я нашел это полезным блоге, что сводилось к следующим командам, которые решили эту проблему для меня:
$ brew services list $ brew services restart postgresql
надеюсь, что это поможет кто-то.
обновить-неизвестная команда: services
после небольшого расследования после одного из комментариев ('Unknown command: services'), я узнал, что авторы 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. не проверял его сам, так что не знаю, если и как это работает.
$ brew services list
$ brew services stop postgresql
остановка
postgresql
, но это может занять некоторое время = = > Успешно остановленpostgresql
(метка: домашнее.mxcl.postgresql)
у меня была аналогичная проблема. Я забыл, что я интегрировал "ланчи" несколько дней назад и использовал это как оболочка 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
У меня была та же проблема...удаление агента запуска решило проблему для меня:
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist rm ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
оказывается, что мое варево.plist для postgres необходимо было выгрузить и удалить в ~ / Library/ LaunchAgents/. После перезагрузки все хорошо... заключительный вопрос.
Я обошел эту ошибку с помощью команды
pg_ctl stop -m immediate pg_ctl start
мне не нужно было выгружать plist таким образом.
когда вы полагаетесь на установленный brew PostgreSQL, следующая команда работала для его закрытия.
> brew services stop postgresql stopping `postgresql`... (might take a while) ==> Successfully stopped `postgresql` (label: homebrew.mxcl.postgresql)
Как уже упоминалось в другом ответе grepping через список процессов, а затем убить все, что связано с postgres делает не работа.
ps aux | grep postgres kill $PID