Comment arrêter le serveur mongodb sous Windows?

J’utilise la stack nginx / PHP / MongoDB et j’essaie de configurer mon environnement de développement sous Windows en créant deux fichiers de commandes.

start.bat

cd C:\www\nginx start nginx cd C:\www\php start php-cgi.exe -b 127.0.0.1:9000 cd C:\www\mongodb start mongod 

stop.bat

 cd C:\www\nginx nginx -s quit cd C:\www\php taskkill /F /IM php-cgi.exe cd C:\www\mongodb mongo --eval "use admin; db.shutdownServer(); quit" # this doesn't work mongo --eval stop_mongod.js # this doesn't work either 

Utiliser taskkill pour arrêter mongod n’est pas une option, car cela peut entraîner une corruption des données. Aucune suggestion?

De la documentation du shell mongo:


utiliser dbname

Cette commande ne fonctionne pas en mode scripté. Au lieu de cela, vous devrez définir explicitement la firebase database dans la connexion (/ dbname dans l’exemple ci-dessus).

Vous pouvez également créer une connexion dans le script:

 db2 = connect("server:27017/otherdbname") 

Je viens avec le code suivant: Enregistrez l’extrait suivant dans le fichier stop_mongod.js :

  db = connect("localhost:27017/admin"); db.shutdownServer(); quit(); 

Ajustez la chaîne de connexion si nécessaire. Ensuite, à partir de la ligne de commande ou de votre script de traitement par lots:

 mongo stop_mongod.js 

Je ne suis pas sûr que ce soit une bonne façon de procéder, l’envoi d’un kill pourrait probablement endommager votre serveur mongo et vous devrez réparer votre firebase database en cas de panne.

Vous avez peut-être déjà résolu cette question mais voici ce que je fais:

 mongo admin --eval "db.shutdownServer()" 

Je suis automatiquement connecté à la collection de l’administrateur et ensuite, je dois juste exécuter l’extinction.

Voici le lien officiel sur la façon d’arrêter Mongodb correctement: http://api.mongodb.org/wiki/current/Starting%20and%20Stopping%20Mongo.html

Meilleur

Si le serveur s’exécute en tant que processus de premier plan dans un terminal, vous pouvez le faire en appuyant sur

 Ctrl-C 

Un autre moyen d’arrêter proprement un serveur en cours d’exécution consiste à utiliser la commande shutdown,

 > use admin > db.shutdownServer(); 

Je suppose, utiliser TASKKILL / IM mongod.exe est bien pour terminer le serveur mongodb gracieusement.

De la ligne de commande Windows. J’utilise MongoDB 3.4 Server sur Windows 7 Pro SP1 64 bits.

Les liens suivants expliquent les étapes:

configure-a-windows-service-pour-mongodb-community-edition

créer manuellement une édition de Windows-service-pour-la-communauté-mongodb

La ligne de commande de console suivante met fin à MongoDB au démarrage:

 Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:\Windows\System32>"C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe" --remove 2017-12-06T08:15:47.883-0600 I CONTROL [main] Trying to remove Windows service 'MongoDB' 2017-12-06T08:15:47.884-0600 I CONTROL [main] Service 'MongoDB' removed 

La ligne de commande du service MongoDB (illustrée ci-dessous) se trouve dans le registre Windows ici:

 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MongoDB 

Pour vérifier, procédez comme suit:

 C:\Windows\System32>sc.exe create MongoDB binPath= "\"C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe\" --service --c onfig=\"C:\Program Files\MongoDB\Server\3.4\mongod.cfg\"" DisplayName= "MongoDB" start= "auto" [SC] CreateService SUCCESS C:\Windows\System32>net start MongoDB The MongoDB service is starting. The MongoDB service was started successfully. C:\Windows\System32>net stop MongoDB The MongoDB service is stopping. The MongoDB service was stopped successfully. C:\Windows\System32>"C:\Program Files\MongoDB\Server\3.4\bin\mongod.exe" --remove 2017-12-06T08:16:36.504-0600 I CONTROL [main] Trying to remove Windows service 'MongoDB' 2017-12-06T08:16:36.505-0600 I CONTROL [main] Service 'MongoDB' removed C:\Windows\System32>