Używam mongo 1.8.2 i próbuję sprawdzić, jak porządnie go zamknąć na komputerze Mac.
na naszych serwerach ubuntu mogę czysto zamknąć mongo z powłoki mongo za pomocą:
> use admin
> db.shutdownServer()
ale na moim Macu nie zabija procesu mongod. wyjście pokazuje, że 'powinno być' zamknięte, ale kiedy i ps -ef | grep mongo pokazuje mi aktywny proces. Ponadto nadal mogę otworzyć powłokę mongo i zapytać o moje bazy danych tak, jakby nigdy nie były zamknięte.
dane wyjściowe z mojej lokalnie db.shutdownServer () to:
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
Wiem, że mogę po prostu zabić ten proces, ale chciałbym to zrobić dokładniej.
mongod
? Tylko na muszli? Używaszlaunchctl
?--logappend
, chociaż zupełnie nowy plik dziennika jest wyraźną wskazówką, że proces został uruchomiony ponownie.Odpowiedzi:
Prawdopodobnie dlatego, że launchctl zarządza Twoją instancją mongod. Jeśli chcesz uruchomić i zamknąć instancję mongod, najpierw ją wyładuj:
launchctl unload -w ~/Library/LaunchAgents/org.mongodb.mongod.plist
Następnie uruchom mongod ręcznie:
Możesz znaleźć swoją lokalizację mongod.conf pod adresem
~/Library/LaunchAgents/org.mongodb.mongod.plist
.Po tym
db.shutdownServer()
będzie działać dobrze.Dodano 22 lutego 2014:
Jeśli zainstalowałeś mongodb przez homebrew, homebrew faktycznie ma przydatne
brew services
polecenie. Aby wyświetlić aktualnie uruchomione usługi:brew services list
Aby uruchomić mongodb:
brew services start mongodb
Aby zatrzymać mongodb, jeśli już działa:
brew services stop mongodb
Aktualizacja
Jak edufinn podkreślono w komentarzu,
brew services
jest teraz dostępny jako polecenia zdefiniowane przez użytkownika i mogą być instalowane z następującego polecenia:brew tap gapple/services
.źródło
launchctl stop homebrew.mxcl.mongodb
aby zatrzymać mongodb.brew
odniesieniu dobrew services
:$ brew services Warning: brew services is unsupported and will be removed soon.
brew services
Został usunięty.$ brew services Error: Unknown command: services
brew services
jest teraz dostępny jako polecenia zdefiniowane przez użytkownika i mogą być instalowane z następującego polecenia:brew tap gapple/services
.Jeśli zainstalowałeś mongodb z homebrew, jest łatwiejszy sposób:
Wyświetl zadanie mongo za pomocą launchctl:
Zatrzymaj pracę mongo:
(Dla mnie to jest
launchctl stop homebrew.mxcl.mongodb
)Rozpocznij pracę mongo:
źródło
Prostym sposobem jest pobranie identyfikatora procesu mongodb i zabicie go. Uwaga: NIE UŻYWAJ do tego celu kill -9 pid, ponieważ może to spowodować uszkodzenie bazy danych.
więc 1. pobierz pid z mongodb
$ pgrep mongo
dostaniesz pid mongo, teraz
$ kill
Możesz również użyć kill -15
źródło
Jeśli zainstalowałeś serwer społecznościowy mongodb przez homebrew, możesz zrobić:
Spowoduje to wyświetlenie bieżących usług, jak poniżej:
Następnie możesz ponownie uruchomić mongodb, najpierw zatrzymując i ponownie uruchamiając:
źródło
Wolę zatrzymać serwer MongoDB za pomocą samego
port
polecenia.I zacząć od nowa.
źródło
Sprawdź te dokumenty:
http://www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo#StartingandStoppingMongo-SendingaUnixINTorTERMsignal
Jeśli uruchomiłeś go w terminalu, powinieneś być w porządku z
ctrl + 'c'
- to zrobi czyste zamknięcie.Jeśli jednak używasz launchctl, istnieją szczegółowe instrukcje, które będą się różnić w zależności od tego, jak został zainstalowany.
Jeśli używasz Homebrew, byłoby to
launchctl stop homebrew.mxcl.mongodb
źródło
To stare pytanie, ale je również znalazłem podczas wyszukiwania.
Jeśli zainstalowałeś z,
brew
rozwiązanie byłoby faktycznie takie:launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
źródło
Jeśli usługa działa przez brew, możesz ją zatrzymać za pomocą następującego polecenia:
źródło
Rozwiązania dostarczane przez innych kiedyś działały u mnie, ale już u mnie nie działają, co jest jak poniżej.
brew services list
dajeWięc użyłem
mongodb-community
zamiast tego,mongodb
który działał dla mnieźródło