2011-12-13 98 views
56

我正在運行mongo 1.8.2並試圖瞭解如何在Mac上徹底關閉它。在Mac OS X上停止mongod的乾淨方法是什麼?

我們的Ubuntu的服務器,我可以關閉蒙戈乾淨地從蒙戈外殼上:

> use admin 
> db.shutdownServer() 

,但在我的Mac,它不會殺死mongod的過程。輸出顯示它'應該'關機,但是當我ps -ef | grep mongo它向我展示了一個活躍的過程。另外,我仍然可以打開一個mongo shell並查詢我的dbs,因爲它從未關閉。

從我db.shutdownServer()的輸出是局部:

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 

我知道我可以殺死進程,但我想這樣做更乾淨。

+0

你是如何開始`mongod`的?只是在殼?使用`launchctl`? – dcrosta 2011-12-13 20:01:37

+0

你有沒有來自日誌的任何信息?可能是因爲MongoDB是「自動重啓」的。您可能希望使用`--logappend`運行,儘管全新的日誌文件清楚地表明該進程已重新啓動。 – 2011-12-13 21:29:27

回答

121

這可能是因爲launchctl管理您的mongod實例。如果要啓動和關閉的mongod實例,卸載,首先:

launchctl unload -w ~/Library/LaunchAgents/org.mongodb.mongod.plist 

然後mongod的手動啓動:

mongod -f path/to/mongod.conf --fork 

您可以找到您的~/Library/LaunchAgents/org.mongodb.mongod.plist位置mongod.conf。

之後,db.shutdownServer()將工作得很好。

新增2014年2月22日:

如果您的MongoDB通過自制安裝,自制實際上有一個方便的brew services命令。要顯示當前正在運行的服務:如果它已經運行

brew services start mongodb

要停止的MongoDB:

brew services list

要啓動MongoDB的

brew services stop mongodb

更新

正如edufinn在評論中指出的那樣,brew services現在作爲用戶定義的命令可用,並且可以使用以下命令安裝:brew tap gapple/services

+0

就是這樣。謝謝! – emilebaizel 2011-12-14 21:37:43

+21

如果有人感興趣,目前,如果你有通過自制軟件安裝mongodb,你實際上需要執行`launchctl stop homebrew.mxcl.mongodb`來停止mongodb。 – 2013-02-25 03:44:15

4

我寧願停止使用port命令本身的MongoDB服務器。

sudo port unload mongodb 

然後重新開始。

sudo port load mongodb 
21

如果您安裝了自制的MongoDB,還有一個更簡單的方法:

launchctl list | grep mongo 

停止蒙戈的工作:與launchctl

列表蒙戈工作

launchctl stop <job label> 

(對我來說這是launchctl stop homebrew.mxcl.mongodb

開始蒙戈工作:

launchctl start <job label> 
2

這是一個老問題,但它的一個,我發現搜索時也是如此。

如果您brew安裝,則解決方案實際上是這樣的:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist

11

簡單的方法就是獲得的MongoDB的進程ID,並殺死它。 請注意不要使用kill -9 pid,因爲這可能會導致數據庫損壞。

所以, 1.獲得的MongoDB的PID

$ p纖ep蒙戈

你會得到蒙戈的PID,現在

$殺

您可以使用kill -15作爲以及

相關問題