Quel est le moyen propre d’arrêter mongod sur Mac OS X?

J’utilise mongo 1.8.2 et j’essaie de voir comment le fermer proprement sur Mac.

sur nos serveurs Ubuntu, je peux arrêter mongo proprement de la shell mongo avec:

> use admin > db.shutdownServer() 

mais sur mon Mac, il ne tue pas le processus mongod. la sortie montre que cela devrait être un arrêt mais quand je ps -ef | grep mongo ça me montre un processus actif. De plus, je peux toujours ouvrir un shell mongo et interroger mes dbs comme si celui-ci n’avait jamais été arrêté.

la sortie de mon db.shutdownServer () localement est:

 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 

Je sais que je peux juste tuer le processus mais j’aimerais le faire plus proprement.

C’est probablement parce que launchctl gère votre instance mongod. Si vous voulez démarrer et arrêter l’instance mongod, déchargez-la d’abord:

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

Puis lancez mongod manuellement:

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

Vous pouvez trouver votre emplacement mongod.conf à partir de ~/Library/LaunchAgents/org.mongodb.mongod.plist .

Après cela, db.shutdownServer() fonctionnerait db.shutdownServer() .

Ajouté le 22 février 2014:

Si vous avez installé mongodb via homebrew, homebrew a en fait une commande pratique de brew services . Pour afficher les services en cours d’exécution:

brew services list

Pour démarrer mongodb:

brew services start mongodb

Pour arrêter mongodb s’il est déjà en cours d’exécution:

brew services stop mongodb

Mettre à jour

Comme edufinn l’a souligné dans le commentaire, les brew services sont maintenant disponibles en tant que commande définie par l’utilisateur et peuvent être installés avec la commande suivante: brew tap gapple/services .

Si vous avez installé mongodb avec homebrew, il existe un moyen plus simple:

Lister le travail mongo avec launchctl:

 launchctl list | grep mongo 

Arrêtez le travail de mongo:

 launchctl stop  

(Pour moi c’est launchctl stop homebrew.mxcl.mongodb )

Démarrer le travail de mongo:

 launchctl start  

Le moyen le plus simple est d’obtenir l’identifiant de processus de mongodb et de le tuer. Veuillez noter NE PAS UTILISER kill -9 pid pour cela car cela pourrait endommager la firebase database.

donc, 1. obtenir le pid de mongodb

$ pgrep mongo

vous aurez le pid de mongo, maintenant

$ kill

Vous pouvez aussi utiliser kill -15

Je préfère arrêter le serveur MongoDB en utilisant la commande de port elle-même.

 sudo port unload mongodb 

Et pour recommencer.

 sudo port load mongodb 

Découvrez ces documents:

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

Si vous l’avez démarré dans un terminal, vous devriez être d’accord avec un ctrl + 'c' – cela fera un arrêt propre.

Cependant, si vous utilisez launchctl, il existe des instructions spécifiques pour cela qui varient en fonction de la façon dont il a été installé.

Si vous utilisez Homebrew, ce serait launchctl stop homebrew.mxcl.mongodb

C’est une vieille question, mais celle que j’ai trouvée en cherchant aussi.

Si vous avez installé avec brew alors la solution serait la suivante:

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