Ответ 1
выясняется, что мой brew.plist для postgres необходимо было выгрузить и удалить в ~/Library/LaunchAgents/. После перезагрузки все хорошо... вопрос закрытия.
Немного о проблеме с 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
выясняется, что мой brew.plist для postgres необходимо было выгрузить и удалить в ~/Library/LaunchAgents/. После перезагрузки все хорошо... вопрос закрытия.
Была такая же проблема, 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. Не проверял сам, поэтому не знаю, как и как это работает.
$ brew services list
$ brew services stop postgresql
Остановка postgresql
, но это может занять некоторое время → Успешно остановлено postgresql
(метка: homebrew.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
Я обошел эту ошибку, используя команду
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)
Как упоминалось в другом ответе, просмотр списка процессов и последующее уничтожение всего, что связано с postgres, не работает.
ps aux | grep postgres
kill $PID