start run mac installed and macos mongodb launchd

macos - run - ¿Cuál es una forma limpia de detener a mongod en Mac OS X?



use mongodb in mac (6)

Esta es una vieja pregunta, pero la encontré durante la búsqueda también.

Si instaló con brew entonces la solución sería la siguiente:

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

Estoy ejecutando mongo 1.8.2 e intentando ver cómo cerrarlo limpiamente en Mac.

en nuestros servidores ubuntu puedo cerrar mongo cleanly desde el shell mongo con:

> use admin > db.shutdownServer()

pero en mi Mac, no mata el proceso de mongod. el resultado muestra que ''debería'' estar apagado pero cuando ps -ef | grep mongo me muestra un proceso activo. también, todavía puedo abrir un shell mongo y consultar mis dbs como si nunca se hubiera apagado.

el resultado de mi db.shutdownServer () localmente es:

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

Sé que puedo matar el proceso, pero me gustaría hacerlo más limpiamente.


La manera simple es obtener la identificación del proceso de mongodb y matarlo. Tenga en cuenta que NO USE kill -9 pid para esto ya que puede dañar la base de datos.

entonces, 1. obtener el pid de mongodb

$ pgrep mongo

obtendrá pid de mongo, ahora

$ matar

Puedes usar kill -15 también



Prefiero detener el servidor MongoDB usando el comando del port .

sudo port unload mongodb

Y para comenzar de nuevo.

sudo port load mongodb


Probablemente sea porque launchctl está administrando tu instancia de mongod. Si desea iniciar y cerrar la instancia de mongod, descargue la primera:

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

Luego, inicie mongod manualmente:

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

Puede encontrar su ubicación de mongod.conf en ~/Library/LaunchAgents/org.mongodb.mongod.plist .

Después de eso, db.shutdownServer() funcionaría bien.

Agregado el 22 de febrero de 2014:

Si tiene mongodb instalado a través de homebrew, homebrew en realidad tiene un práctico comando de brew services . Para mostrar los servicios actuales en ejecución:

brew services list

Para comenzar mongodb:

brew services start mongodb

Para detener mongodb si ya se está ejecutando:

brew services stop mongodb

Actualizar

Como lo señaló edufinn en el comentario, los brew services ahora están disponibles como un comando definido por el usuario y se pueden instalar con el siguiente comando: brew tap gapple/services .


Si instaló mongodb con homebrew, hay una manera más fácil:

Listar el trabajo de mongo con launchctl:

launchctl list | grep mongo

Detener el trabajo de mongo:

launchctl stop <job label>

(Para mí esto es launchctl stop homebrew.mxcl.mongodb )

Comience el trabajo de mongo:

launchctl start <job label>