Estoy ejecutando mongo 1.8.2 y trato de ver cómo apagarlo limpiamente en Mac.
en nuestros servidores de ubuntu puedo apagar mongo limpiamente desde el shell mongo con:
> use admin
> db.shutdownServer()
pero en mi Mac, no mata el proceso mongod. la salida muestra que 'debería ser' apagado pero cuando i ps -ef | grep mongo me muestra un proceso activo. Además, todavía puedo abrir un shell mongo y consultar mi base de datos como si nunca se hubiera apagado.
la salida 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 terminar el proceso, pero me gustaría hacerlo de forma más limpia.
mongod
? ¿Solo en el caparazón? Usandolaunchctl
?--logappend
, aunque un nuevo archivo de registro es una clara indicación de que el proceso se reinició.Respuestas:
Probablemente sea porque launchctl está administrando su instancia mongod. Si desea iniciar y cerrar la instancia de mongod, descárguela primero:
launchctl unload -w ~/Library/LaunchAgents/org.mongodb.mongod.plist
Luego inicie mongod manualmente:
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
brew services
comando útil . Para mostrar los servicios en ejecución actuales:brew services list
Para iniciar mongodb:
brew services start mongodb
Para detener mongodb si ya se está ejecutando:
brew services stop mongodb
Actualizar
Como edufinn señaló en el comentario,
brew services
ya está disponible como comando definido por el usuario y se puede instalar con el siguiente comando:brew tap gapple/services
.fuente
launchctl stop homebrew.mxcl.mongodb
para detener mongodb.brew
respecto abrew services
:$ brew services Warning: brew services is unsupported and will be removed soon.
brew services
se ha eliminado.$ brew services Error: Unknown command: services
brew services
ahora está disponible como comando definido por el usuario y se puede instalar con el siguiente comando:brew tap gapple/services
.Si instaló mongodb con homebrew, hay una manera más fácil:
Enumere el trabajo de mongo con launchctl:
Detener el trabajo de Mongo:
(Para mi esto es
launchctl stop homebrew.mxcl.mongodb
)Iniciar trabajo de mongo:
fuente
Una forma sencilla es obtener el ID de 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. obtén el pid de mongodb
$ pgrep mongo
obtendrás pid de mongo, ahora
$ matar
También puedes usar kill -15
fuente
Si ha instalado el servidor de la comunidad mongodb a través de homebrew, puede hacer lo siguiente:
Esto enumerará los servicios actuales de la siguiente manera:
Luego, puede reiniciar mongodb deteniéndose primero y reiniciando:
fuente
Prefiero detener el servidor MongoDB usando el
port
comando en sí.Y empezar de nuevo.
fuente
Consulte estos documentos:
http://www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo#StartingandStoppingMongo-SendingaUnixINTorTERMsignal
Si lo inició en una terminal, debería estar de acuerdo con un
ctrl + 'c'
- esto hará un apagado limpio.Sin embargo, si está utilizando launchctl, hay instrucciones específicas que variarán según cómo se haya instalado.
Si está utilizando Homebrew, sería
launchctl stop homebrew.mxcl.mongodb
fuente
Esta es una pregunta antigua, pero también la encontré mientras buscaba.
Si lo instaló con
brew
, la solución en realidad sería la siguiente:launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
fuente
Si el servicio se está ejecutando a través de brew, puede detenerlo usando el siguiente comando:
fuente
Las soluciones proporcionadas por otros solían funcionar para mí, pero ya no me funcionan, como se muestra a continuación.
brew services list
daEntonces usé en
mongodb-community
lugar de lomongodb
que funcionó para mífuente