Ich verwende Mongo 1.8.2 und versuche zu sehen, wie ich es auf dem Mac sauber herunterfahren kann.
Auf unseren Ubuntu-Servern kann ich Mongo sauber von der Mongo-Shell herunterfahren mit:
> use admin
> db.shutdownServer()
aber auf meinem Mac wird der Mongod-Prozess nicht beendet. Die Ausgabe zeigt, dass es heruntergefahren werden sollte, aber wenn ich ps -ef | grep mongo es zeigt mir einen aktiven prozess. Außerdem kann ich immer noch eine Mongo-Shell öffnen und meine Datenbank abfragen, als wäre sie nie heruntergefahren worden.
Die Ausgabe von meinem db.shutdownServer () lokal ist:
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
Ich weiß, dass ich den Prozess einfach beenden kann, aber ich würde es gerne sauberer machen.
mongod
? Nur an der Muschel? Verwendenlaunchctl
?--logappend
, obwohl eine brandneue Protokolldatei ein klares Indiz dafür ist, dass der Prozess neu gestartet wurde.Antworten:
Dies liegt wahrscheinlich daran, dass launchctl Ihre Mongod-Instanz verwaltet. Wenn Sie die mongod-Instanz starten und herunterfahren möchten, entladen Sie diese zuerst:
Dann starten Sie mongod manuell:
Sie finden Ihren Standort auf mongod.conf unter
~/Library/LaunchAgents/org.mongodb.mongod.plist
.Danach
db.shutdownServer()
würde gut funktionieren.Hinzugefügt am 22. Februar 2014:
Wenn Sie Mongodb über Homebrew installiert haben, hat Homebrew tatsächlich einen praktischen
brew services
Befehl. So zeigen Sie aktuelle laufende Dienste an:brew services list
So starten Sie mongodb:
brew services start mongodb
So stoppen Sie mongodb, wenn es bereits ausgeführt wird:
brew services stop mongodb
Aktualisieren
Wie edufinn im Kommentar ausgeführt hat,
brew services
ist es jetzt als benutzerdefinierter Befehl verfügbar und kann mit folgendem Befehl installiert werden :brew tap gapple/services
.quelle
launchctl stop homebrew.mxcl.mongodb
, um Mongodb zu stoppen.brew
Bezug aufbrew services
:$ brew services Warning: brew services is unsupported and will be removed soon.
brew services
wurde entfernt.$ brew services Error: Unknown command: services
brew services
ist jetzt als benutzerdefinierter Befehl verfügbar und kann mit folgendem Befehl installiert werden :brew tap gapple/services
.Wenn Sie mongodb mit homebrew installiert haben, gibt es einen einfacheren Weg:
Liste Mongo Job mit launchctl:
Stoppen Sie Mongo Job:
(Für mich ist das
launchctl stop homebrew.mxcl.mongodb
)Mongo Job starten:
quelle
Ein einfacher Weg ist, die Prozess-ID von Mongodb zu erhalten und sie zu töten. Bitte beachten Sie, dass Sie hierfür NICHT kill -9 pid verwenden, da dies die Datenbank beschädigen kann.
Also, 1. Holen Sie sich die PID von Mongodb
$ pgrep mongo
Du wirst jetzt Mongo bekommen
$ töten
Sie können auch kill -15 verwenden
quelle
Wenn Sie den Mongodb Community Server über Homebrew installiert haben, können Sie Folgendes tun:
Dadurch werden die aktuellen Dienste wie folgt aufgelistet:
Dann können Sie mongodb neu starten, indem Sie zuerst anhalten und neu starten:
quelle
Ich ziehe es vor, den MongoDB-Server mit dem
port
Befehl selbst zu stoppen .Und um es erneut zu starten.
quelle
Schauen Sie sich diese Dokumente an:
http://www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo#StartingandStoppingMongo-SendingaUnixINTorTERMsignal
Wenn Sie es in einem Terminal gestartet haben, sollten Sie mit a einverstanden sein
ctrl + 'c'
- dies führt zu einem sauberen Herunterfahren.Wenn Sie jedoch launchctl verwenden, gibt es spezielle Anweisungen dafür, die je nach Installation variieren.
Wenn Sie Homebrew verwenden, wäre es
launchctl stop homebrew.mxcl.mongodb
quelle
Dies ist eine alte Frage, die ich aber auch bei der Suche gefunden habe.
Wenn Sie mit
brew
dann installiert haben, wäre die Lösung tatsächlich die folgende:launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
quelle
Wenn der Dienst über Brew ausgeführt wird, können Sie ihn mit dem folgenden Befehl beenden:
quelle