Какой простой способ остановить mongod в Mac OS X? - PullRequest
71 голосов
/ 13 декабря 2011

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

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

> use admin
> db.shutdownServer()

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

вывод из моего локального 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

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

Ответы [ 6 ]

151 голосов
/ 14 декабря 2011

Это, вероятно, потому что launchctl управляет вашим экземпляром 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, у homebrew действительно есть удобный brew servicesкоманда.Чтобы показать текущие запущенные службы:

brew services list

Для запуска mongodb:

brew services start mongodb

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

brew services stop mongodb

Обновление

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

26 голосов
/ 13 февраля 2014

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

Список заданий Монго с launchctl:

launchctl list | grep mongo

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

launchctl stop <job label>

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

Начать работу монго:

launchctl start <job label>
20 голосов
/ 17 февраля 2016

Простой способ - получить идентификатор процесса mongodb и уничтожить его. Обратите внимание, что НЕ ИСПОЛЬЗУЙТЕ kill -9 pid для этого, так как это может повредить базу данных.

так, 1. получить пуд монгодб

$ pgrep mongo

вы получите пуд Монго, Теперь

$ kill

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

4 голосов
/ 14 января 2014

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

sudo port unload mongodb

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

sudo port load mongodb
3 голосов
/ 14 декабря 2011

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

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

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

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

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

2 голосов
/ 04 октября 2015

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

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

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

...