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

Какой чистый способ остановить mongod на Mac OS X?

Я запускаю mongo 1.8.2 и пытаюсь понять, как его полностью отключить на Mac.

на наших серверах ubuntu я могу отключить mongo чисто от оболочки mongo с помощью:

> use admin
> db.shutdownServer()

но на моем Mac он не убивает процесс mongod. выход показывает, что он должен быть "выключен", но когда я ps -ef | grep mongo показывает мне активный процесс. Кроме того, я все еще могу открыть оболочку mongo и запросить мои dbs, как никогда не завершая работу.

вывод из моего db.shutdownServer() локально:

MongoDB shell version: 1.8.2
connecting to: test
> use admin                  
switched to db admin
> db.shutdownServer()
Tue Dec 13 11:44:21 DBClientCursor::init call() failed
Tue Dec 13 11:44:21 query failed : admin.$cmd { shutdown: 1.0 } to: 127.0.0.1
server should be down...
Tue Dec 13 11:44:21 trying reconnect to 127.0.0.1
Tue Dec 13 11:44:21 reconnect 127.0.0.1 failed couldn't connect to server 127.0.0.1
Tue Dec 13 11:44:21 Error: error doing query: unknown shell/collection.js:150

Я знаю, что могу просто убить процесс, но я бы хотел сделать это более чисто.

4b9b3361

Ответ 1

Вероятно, потому что launchctll управляет вашим экземпляром mongod. Если вы хотите запустить и закрыть экземпляр mongod, сначала выгрузите его:

launchctl unload -w ~/Library/LaunchAgents/org.mongodb.mongod.plist

Затем запустите mongod вручную:

mongod -f path/to/mongod.conf --fork

Вы можете найти свое местоположение mongod.conf от ~/Library/LaunchAgents/org.mongodb.mongod.plist.

После этого db.shutdownServer() будет работать нормально.

Добавлено 22 февраля 2014 года:

Если у вас есть mongodb, установленный через homebrew, у доморощенного действительно есть удобная команда brew services. Чтобы показать текущие текущие службы:

brew services list

Чтобы запустить mongodb:

brew services start mongodb

Чтобы остановить mongodb, если он уже запущен:

brew services stop mongodb

Обновление

Как отметил edufinn в комментарии, brew services теперь доступен как пользовательская команда и может быть установлен следующей командой: brew tap gapple/services.

Ответ 2

Если вы установили mongodb с homebrew, вам будет проще:

Список mongo job with launchctl:

launchctl list | grep mongo

Остановить работу mongo:

launchctl stop <job label>

(Для меня это launchctl stop homebrew.mxcl.mongodb)

Запустите mongo job:

launchctl start <job label>

Ответ 3

Простой способ - получить идентификатор процесса mongodb и убить его. Обратите внимание, что для этого не используйте kill -9 pid, так как это может привести к повреждению базы данных.

так, 1. получить pid mongodb

$pgrep mongo

вы получите pid of mongo, Now

$kill

Вы также можете использовать kill -15

Ответ 4

Я предпочитаю останавливать сервер MongoDB с помощью самой команды port.

sudo port unload mongodb

И снова запустить его.

sudo port load mongodb

Ответ 5

Проверьте эти документы:

http://www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo#StartingandStoppingMongo-SendingaUnixINTorTERMsignal

Если вы запустили его в терминале, вы должны быть в порядке с ctrl + 'c' - это приведет к чистому отключению.

Однако, если вы используете launchctll, для него будут указаны конкретные инструкции, которые будут меняться в зависимости от того, как он был установлен.

Если вы используете Homebrew, это будет launchctl stop homebrew.mxcl.mongodb

Ответ 6

Это старый вопрос, но его я нашел и при поиске.

Если вы установили с помощью brew, то решение на самом деле было бы следующим:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist