Я запускаю mongo 1.8.2 и пытаюсь понять, как его закрыть на Mac.
на наших серверах ubuntu я могу полностью выключить mongo из оболочки mongo с помощью:
> use admin
> db.shutdownServer()
но на моем Mac это не убивает процесс mongod. вывод показывает, что это «должно быть» выключено, но когда я ps -ef | grep mongo показывает мне активный процесс. Кроме того, я все еще могу открыть оболочку 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
Я знаю, что могу просто убить процесс, но я хотел бы сделать это более аккуратно.
mongod
? Просто у снаряда? Используяlaunchctl
?--logappend
, хотя новый файл журнала явным образом указывает на то, что процесс перезапущен.Ответы:
Вероятно, это потому, что launchctl управляет вашим экземпляром mongod. Если вы хотите запустить и выключить экземпляр mongod, сначала выгрузите его:
launchctl unload -w ~/Library/LaunchAgents/org.mongodb.mongod.plist
Затем запустите mongod вручную:
Вы можете найти свое местоположение mongod.conf из
~/Library/LaunchAgents/org.mongodb.mongod.plist
.После этого все
db.shutdownServer()
будет работать нормально.Добавлено 22 февраля 2014 г .:
Если у вас установлен mongodb через homebrew, у homebrew действительно есть удобная
brew services
команда. Чтобы показать текущие запущенные службы:brew services list
Чтобы запустить mongodb:
brew services stop mongodb-community
Чтобы остановить mongodb, если он уже запущен:
brew services stop mongodb-community
Обновить
Как edufinn отметил в комментариях,
brew services
теперь доступен в качестве определенного пользователя команды и может быть установлено с помощью следующей команды:brew tap gapple/services
.источник
launchctl stop homebrew.mxcl.mongodb
чтобы остановить mongodb.brew
об отказе от поддержки в отношенииbrew services
:$ brew services Warning: brew services is unsupported and will be removed soon.
brew services
был удален.$ brew services Error: Unknown command: services
brew services
теперь доступен в качестве определенного пользователя команды и может быть установлено с помощью следующей команды:brew tap gapple/services
.Если вы установили mongodb с помощью homebrew, есть более простой способ:
Вывести список заданий mongo с помощью launchctl:
Прекратить работу монго:
(Для меня это
launchctl stop homebrew.mxcl.mongodb
)Начать работу монго:
источник
Простой способ - получить идентификатор процесса mongodb и убить его. Обратите внимание, НЕ ИСПОЛЬЗУЙТЕ kill -9 pid для этого, так как это может привести к повреждению базы данных.
Итак, 1. получите pid от mongodb
$ pgrep mongo
вы получите пид монго, сейчас
$ kill
Вы также можете использовать kill -15
источник
Если вы установили сервер сообщества mongodb через homebrew, вы можете:
Это перечислит текущие службы, как показано ниже:
Затем вы можете перезапустить mongodb, сначала остановив и перезапустив:
источник
Я предпочитаю останавливать сервер MongoDB с помощью самой
port
команды.И начать заново.
источник
Посмотрите эти документы:
http://www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo#StartingandStoppingMongo-SendingaUnixINTorTERMsignal
Если вы запустили его в терминале, все должно быть в порядке
ctrl + 'c'
- это приведет к чистому завершению работы.Однако, если вы используете launchctl, для этого есть специальные инструкции, которые будут зависеть от того, как он был установлен.
Если вы используете Homebrew, это будет
launchctl stop homebrew.mxcl.mongodb
источник
Это старый вопрос, но я его тоже нашел во время поиска.
Если вы установили с,
brew
то решение на самом деле будет следующим:launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
источник
Если служба работает через brew, вы можете остановить ее с помощью следующей команды:
источник
Решения, предоставленные другими, раньше работали для меня, но больше не работают для меня, как показано ниже.
brew services list
даетПоэтому я использовал
mongodb-community
вместо того,mongodb
что у меня работалоисточник