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
Mira estos documentos:
Si lo inició en un terminal, debería estar bien con un ctrl + ''c''
- esto hará un apagado limpio.
Sin embargo, si está utilizando launchctl hay instrucciones específicas para eso, que variarán dependiendo de cómo fue instalado.
Si está utilizando Homebrew, sería launchctl stop homebrew.mxcl.mongodb
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>