Estou executando o mongo 1.8.2 e tentando ver como desligá-lo de forma limpa no Mac.
em nossos servidores ubuntu, posso desligar o mongo de forma limpa do shell do mongo com:
> use admin
> db.shutdownServer()
mas no meu Mac, ele não mata o processo mongod. a saída mostra que 'deveria ser' encerrado, mas quando i ps -ef | grep mongo ele me mostra um processo ativo. Além disso, ainda posso abrir um shell mongo e consultar meu banco de dados como se ele nunca tivesse sido desligado.
a saída do meu db.shutdownServer () localmente é:
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
Eu sei que posso simplesmente eliminar o processo, mas gostaria de fazer isso de forma mais limpa.
mongod
? Apenas na concha? Usandolaunchctl
?--logappend
, embora um arquivo de log totalmente novo seja uma indicação clara de que o processo foi reiniciado.Respostas:
Provavelmente é porque o launchctl está gerenciando sua instância do mongod. Se você deseja iniciar e desligar a instância mongod, descarregue-a primeiro:
launchctl unload -w ~/Library/LaunchAgents/org.mongodb.mongod.plist
Em seguida, inicie o mongod manualmente:
Você pode encontrar seu local mongod.conf em
~/Library/LaunchAgents/org.mongodb.mongod.plist
.Depois disso,
db.shutdownServer()
funcionaria muito bem.Adicionado em 22 de fevereiro de 2014:
Se você instalou o mongodb via homebrew, o homebrew tem um
brew services
comando útil . Para mostrar os serviços atuais em execução:brew services list
Para iniciar o mongodb:
brew services stop mongodb-community
Para interromper o mongodb se já estiver em execução:
brew services stop mongodb-community
Atualizar
Como edufinn apontadas no comentário,
brew services
está agora disponível como comando definido pelo usuário e pode ser instalado com seguinte comando:brew tap gapple/services
.fonte
launchctl stop homebrew.mxcl.mongodb
para parar o mongodb.brew
relação abrew services
:$ brew services Warning: brew services is unsupported and will be removed soon.
brew services
foi removido.$ brew services Error: Unknown command: services
brew services
está agora disponível como comando definido pelo usuário e pode ser instalado com seguinte comando:brew tap gapple/services
.Se você instalou o mongodb com homebrew, há uma maneira mais fácil:
Listar trabalho mongo com launchctl:
Pare o trabalho do mongo:
(Para mim isso é
launchctl stop homebrew.mxcl.mongodb
)Comece o trabalho mongo:
fonte
Uma maneira simples é obter o id do processo de mongodb e eliminá-lo. Por favor, note NÃO USE kill -9 pid para isso, pois pode causar danos ao banco de dados.
então, 1. obtenha o pid de mongodb
$ pgrep mongo
você vai receber pid de mongo, agora
$ kill
Você pode usar kill -15 também
fonte
Se você instalou o servidor da comunidade mongodb via homebrew, pode fazer:
Isso listará os serviços atuais conforme abaixo:
Então você pode reiniciar o mongodb primeiro parando e reiniciando:
fonte
Eu prefiro parar o servidor MongoDB usando o
port
próprio comando.E para começar de novo.
fonte
Confira estes documentos:
http://www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo#StartingandStoppingMongo-SendingaUnixINTorTERMsignal
Se você o iniciou em um terminal, deve estar ok com um
ctrl + 'c'
- isso fará um desligamento limpo.No entanto, se você estiver usando o launchctl, existem instruções específicas para isso, que variam dependendo de como foi instalado.
Se você estiver usando o Homebrew, seria
launchctl stop homebrew.mxcl.mongodb
fonte
Esta é uma pergunta antiga, mas também encontrei durante a pesquisa.
Se você instalou com
brew
, a solução seria realmente esta:launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
fonte
Se o serviço estiver sendo executado via brew, você pode interrompê-lo usando o seguinte comando:
fonte
As soluções fornecidas por outros costumavam funcionar para mim, mas não estão mais funcionando para mim, que é como abaixo.
brew services list
dáEntão eu usei, em
mongodb-community
vez domongodb
que funcionou para mimfonte