web-dev-qa-db-fra.com

Comment arrêter mongoDB en une commande

Je dois pouvoir démarrer/arrêter MongoDB sur le CLI. C'est assez simple pour commencer:

./mongod

Mais pour arrêter mongo DB, je dois d'abord ouvrir mongo Shell ouvert, puis taper deux commandes:

$ ./mongo

utiliser admin

db.shutdownServer ()

Donc, je ne sais pas comment arrêter Mongo DB en une seule ligne. De l'aide?

126
XiaoYao

Démarrage et arrêt de MongoDB est traité dans le manuel MongoDB. Il explique les différentes options permettant d’arrêter MongoDB via Shell, cli, les pilotes, etc. Il détaille également les risques d’arrêt incorrect de MongoDB (tel que la corruption de données) et décrit les différents signaux d’abattage.

De plus, si vous avez installé MongoDB avec un gestionnaire de paquets pour Ubuntu ou Debian , vous pouvez arrêter mongodb (anciennement mongod) comme suit:

  • Upstart: Sudo service mongodb stop

  • Sysvinit: Sudo /etc/init.d/mongodb stop

Ou sur Mac OS X

Ou sur Systèmes Red Hat based:

  • service mongod stop

Ou sur Windows si vous avez installé un service nommé MongoDB:

  • net stop MongoDB

Et s'il n'est pas installé en tant que service (à partir de Windows 7+), vous pouvez exécuter:

  • taskkill /f /im mongod.exe

Pour en savoir plus sur les problèmes d’un arrêt impropre, sur la meilleure façon d’éviter un tel scénario et sur les mesures à prendre en cas d’arrêt impropre, veuillez consulter: Récupérer des données après un arrêt inattendu .

181
Mark Hillick

Si vous voulez littéralement un équivalent d'une ligne aux commandes de votre question initiale, vous pouvez également créer un alias:

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

La réponse de Mark au démarrage et à l'arrêt de MongoDB via des services est l'approche administrative la plus typique (et la plus recommandée).

91
Stennie

mongod --dbpath /path/to/your/db --shutdown

Plus d'infos sur official: http://docs.mongodb.org/manual/tutorial/manage-mongodb-processes/

39
francoisrv

Si le serveur est exécuté en tant que processus d’avant-plan dans un terminal, vous pouvez le faire en appuyant sur

Ctrl-C

Une autre façon d’arrêter proprement un serveur en cours d’exécution consiste à utiliser la commande shutdown,

> use admin
> db.shutdownServer();

Sinon, une commande telle que kill peut être utilisée pour envoyer le signal. Si Mongod a 10014 comme PID, la commande serait 

kill -2 10014
25
Nanhe Kumar

J'ai suivi la documentation de MongoDB officielle pour m'arrêter avec des signaux. L'une des commandes suivantes peut être utilisée (PID représente le Process ID du processus mongod): 

kill PID

qui envoie le signal 15 (SIGTERM), ou

kill -2 PID

qui envoie le signal 2 (SIGINT).

Warning from documentation MongoDB :
N'utilisez jamais kill -9 (c'est-à-dire SIGKILL) pour mettre fin à une instance mongod.

Si vous avez plus d'une instance en cours d'exécution ou si vous vous moquez du PID, vous pouvez utiliser pkill pour envoyer le signal à tous les processus mongod en cours d'exécution:

pkill mongod

ou

pkill -2 mongod

ou, bien plus sûr, uniquement aux processus qui vous appartiennent:

pkill -U $USER mongod

ou

pkill -2 -U $USER mongod

PS
Remarque: j’ai eu recours à cette option car mongod --shutdown, bien que mentionné dans la documentation actuelle de { documentation MongoDB }, ne fonctionne curieusement pas sur ma machine (macOS, mongodb v3.4.10, installé avec homebrew):
Error parsing command line: unrecognised option '--shutdown' 

PPS
(spécifique à macOS) Avant que quiconque ne se demande: non, je ne pouvais pas l'arrêter avec une commande
brew services stop mongodb
parce que je ne l'ai pas commencé avec
brew services start mongodb.
J'avais commencé mongod avec une ligne de commande personnalisée :-)

10
t0r0X

Utilisez mongod --shutdown

Selon le document officiel: manage-mongodb-processus/

:RÉ 

6
Shawn Wang

Un liners pour démarrer ou arrêter le service mongodb en ligne de commande;

  1. Pour démarrer le service, utilisez: NET START MONGODB
  2. Pour arrêter le service, utilisez: NET STOP MONGODB

Je l'utilise moi-même, ça marche.

4
Pirira

créer un fichier appelé mongostop.bat

enregistrer le code suivant dedans 

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

lancez le fichier mongostop.bat et vous avez réussi à arrêter mongo 

3

D'après les commandes données, je pense que vous êtes sous Linux. 

Démarrez MongoDB:

$ Sudo service mongod start
mongod start/running, process XXXXX 

Vérifier l'état:

$ Sudo service mongod status
mongod start/running, process XXXXX 

Stop MongoDB:

$ Sudo service mongod stop
mongod stop/waiting 
2
ranafeb14

CTRL + C

sur la ligne de commande de Windows

1
Vincent T.

dans la fenêtre du terminal sur votre mac, appuyez sur control + c

1
Shyamal

J'utilise ce script de démarrage sur Ubuntu.

#!/bin/sh

### BEGIN INIT INFO
# Provides:     mongodb
# Required-Sart:
# Required-Stop:
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6
# Short-Description: mongodb
# Description: mongo db server
### END INIT INFO

. /lib/lsb/init-functions

PROGRAM=/opt/mongo/bin/mongod
MONGOPID=`ps -ef | grep 'mongod' | grep -v grep | awk '{print $2}'`

test -x $PROGRAM || exit 0

case "$1" in
  start)
     log_begin_msg "Starting MongoDB server"
         ulimit -v unlimited.
         ulimit -n 100000
     /opt/mongo/bin/mongod --fork --quiet --dbpath /data/db --bind_ip 127.0.0.1 --rest   --config /etc/mongod.conf.
     log_end_msg 0
     ;;
  stop)
     log_begin_msg "Stopping MongoDB server"
     if [ ! -z "$MONGOPID" ]; then
kill -15 $MONGOPID
     fi
     log_end_msg 0
     ;;
  status)
     ;;
  *)
     log_success_msg "Usage: /etc/init.d/mongodb {start|stop|status}"
     exit 1
esac

exit 0
0
Boris Ivanov

Les fenêtres

Dans PowerShell, c'est: Stop-Service MongoDB

Ensuite, pour le redémarrer: Start-Service MongoDB

Pour vérifier si cela a été démarré, lancez: net start | findstr MongoDB.

Remarque: ci-dessus suppose que MongoDB est enregistré en tant que service .

0
kenorb

Mon cas particulier est:

commencez précédemment mongod par:

Sudo -u mongod mongod -f /etc/mongod.conf

maintenant, je veux arrêter mongod.

et référez-vous au document officiel Stop mongod Processes , a essayé:

(1) shutdownServer mais échoué:

> use admin
switched to db admin
> db.shutdownServer()
2019-03-06T14:13:15.334+0800 E QUERY    [thread1] Error: shutdownServer failed: {
        "ok" : 0,
        "errmsg" : "shutdown must run from localhost when running db without auth",
        "code" : 13
} :
_getErrorWithCode@src/mongo/Shell/utils.js:25:13
DB.prototype.shutdownServer@src/mongo/Shell/db.js:302:1
@(Shell):1:1

(2) --shutdown a encore échoué:

# mongod --shutdown
There doesn't seem to be a server running with dbpath: /data/db

(3) commande de démarrage précédente ajoutant --shutdown:

Sudo -u mongod mongod -f /etc/mongod.conf --shutdown
killing process with pid: 30213
failed to kill process: errno:1 Operation not permitted

(4) utilisez service pour arrêter:

service mongod stop

et

service mongod status

affiche Active: inactive (dead) attendu mais mongod réellement toujours en cours d’exécution, car peut voir le processus de ps:

# ps -edaf | grep mongo | grep -v grep
root     30213     1  0 Feb04 ?        03:33:22 mongod --port PORT --dbpath=/var/lib/mongo

et enfin , vraiment arrêter Mongod par:

# Sudo mongod -f /etc/mongod.conf --shutdown
killing process with pid: 30213

jusqu'à maintenant, cause fondamentale: toujours inconnue ...

espérons que la solution ci-dessus est utile pour votre.

0
crifan

S'appuyant sur la réponse de Stennie:

mongo --eval "db.getSiblingDB('admin').shutdownServer();quit()"

J'ai trouvé que Mongo essayait de se reconnecter à la base de données après la fermeture du serveur, ce qui causerait un délai et des messages d'erreur. Ajouter quit () après l’arrêt l’accélère et réduit le nombre de messages, mais il en reste un. 

Je souhaite également ajouter un contexte - je commence et arrête mongod dans le cadre de scénarios de test pour un autre code, de sorte que l'enregistrement en tant que service ne convient pas au cas d'utilisation. J'espère finir avec quelque chose qui fonctionne sur toutes les plateformes (ceci est testé dans Windows en ce moment). J'utilise Mongod 3.6.9

0
David Fridley