2014-01-29 6 views
18

Ich bin sehr neu bei Mongo. Ich betreibe mongod wie beschrieben here in Mac OS X. Ich führe zwei mongod Prozesse von der Befehlszeile aus. Wenn ich die mongod Prozesse stoppen muss, führe ich einfach kill <pid of mongod> aus. Ist es der empfohlene Weg, um mongod zu stoppen?Kann ich Mongod einfach töten, um Mongo zu stoppen?

Antwort

25

verwenden Dies ist ziemlich spät, aber ich jetzt gleiche Problem hatte, und ich fand eine einfache Lösung:

Esan-iMac:~$mongo admin --eval "db.shutdownServer()" 

MongoDB shell version: 2.6.4 
connecting to: admin 
2015-02-19T10:54:22.574+0200 DBClientCursor::init call() failed 
server should be down... 

Es gibt einige seltsame Nachrichten, aber es funktioniert.

Und ich machte alias -Kommando für die Ausführung einfach.

alias stop-mongo='/opt/mongo/release/bin/mongo admin --eval "db.shutdownServer()"' 

Dies funktioniert zumindest, wenn Sie Ihren Mongo manuell starten (z. B. mit --gabel Option).

4

Windows-

use admin 
db.shutdownServer() 

Für Systeme mit Auth aktiviert ist, darf der Benutzer nur Ausgabe db.shutdownServer(), wenn aktiviert der Admin-Datenbank oder über den lokalen Host-Schnittstelle auf Systemen ohne Authentifizierung authentifiziert.

Linux

mongod --shutdown 

Sie können auch

kill <mongod process ID> 

siehe http://docs.mongodb.org/manual/tutorial/manage-mongodb-processes/

+1

Danke. Hinzugefügt, dass ich "Mongo" in Mac laufen lasse. Es ist interessant, 'mongod' hat keine' shutdown'-Option auf dem Mac: (( – Michael

+0

siehe http://stackoverflow.com/questions/8495293/whats-a-clean-way-to-stop-mongod-on-mac- os-x – jcrada

1

begegnet nur ein Problem mit dem in Mac "nur die mongod töten" ...

  1. Die mongod von "launchctl" als Dienst ausgeführt wird in Mac-Systemen gehalten wird. "einfach zu töten" wird diesen Dienst töten.

  2. Jetzt verwenden wir mongo Shell wieder mongod, aber für andere Entwicklungszwecke wie Verbindung vom Knoten müssen wir sicherstellen, dass mongod immer wieder laufen.

  3. Andere Alternative ist das System heruntergefahren und neu gestartet.

Better Way:

starten launchctl solche Dienste zu verwalten verwenden. Hier ist ein Beispiel dafür:

What is the correct way to start a mongod service on linux/OS X?

18

Es gelang schließlich (Ubuntu 15.04) mit

//1.find Prozess nach Name:

$ pgrep mongo 

// 2.töten mongod-Prozess

$ kill 1350 
2

Der einfachste Weg ist Ctrl + C, was für mich auf einer blockierenden Bash-Shell unter El Capitan gearbeitet.

8

Die angenommene Antwort von Esa ist korrekt. Auch, ob die Verwendung von Kill empfohlen wird - ja, aber mit Flag -2 oder kein Flag, niemals . Wie in docs erwähnt.

kill -2 `pgrep mongo` 

Alias ​​

alias stopmongo='kill -2 `pgrep mongo`' 
+0

können Sie erklären, y, die wir verwenden müssen -2 Flagge –

+1

@SujayUN - Bitte überprüfen Sie den Link zu offiziellen Dokumenten von Mongo in der Antwort.Dies wird von Mongo-Entwicklern empfohlen.Der Grund, warum ich erwähnte nicht zu verwenden -9, war AFAIK (nicht perfekt) es ist ein Kill-Signal und tötet die Anwendung sofort -2 in Layman ist ein Soft-Interrupt, der Mongo sagt, seine kritische Aufgabe zu beenden, keine zukünftigen Daten R/W-Anfragen zu akzeptieren und zu beenden Datenkorruption.Weitere Informationen zu Signalen finden Sie unter http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_12_01.html – saurabheights

1

Wenn Sie Autostart konfiguriert haben, den Prozess zu töten nicht helfen, werden neue sofort starten. Um den Autostart zu deaktivieren, müssen Sie zuerst die Autostart-Datei suchen. Sie können versuchen, die Datei mit z.

find/-name "mongodb.plist" oder locate "mongodb.plist"

Nachdem die Datei gefunden wird, entfernen Sie den Autostart-config (können Sie versuchen, ohne sudo zuerst, es ist nicht erforderlich, wenn Sie die Installation mit Homebrew getan):

sudo launchctl unload -w <file> 

Wenn Sie den Prozess trotzdem abbrechen möchten und keinen Autostart verwenden, denken Sie daran, nicht kill -9 <PID> zu verwenden, da dies die db beschädigen kann. kill -1 <PID> oder kill -15 <PID> sollten sichere Optionen sein.