我正在运行mongo 1.8.2并试图了解如何在Mac上彻底关闭它。
在我们的ubuntu服务器上,我可以通过以下方式从mongo shell干净地关闭mongo:> 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 :(得分:148)
这可能是因为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 list
启动mongodb:
brew services start mongodb
如果mongodb已经在运行,请停止:
brew services stop mongodb
<强>更新强>
正如edufinn在评论中指出的那样,brew services
现在可以作为用户定义的命令使用,并且可以使用以下命令安装:brew tap gapple/services
。
答案 1 :(得分:26)
如果您使用自制软件安装mongodb,则有一种更简单的方法:
使用launchctl列出mongo作业:
launchctl list | grep mongo
停止mongo工作:
launchctl stop <job label>
(对我来说这是launchctl stop homebrew.mxcl.mongodb
)
启动mongo job:
launchctl start <job label>
答案 2 :(得分:18)
简单的方法是获取mongodb的进程ID并将其杀死。 请注意,请勿使用kill -9 pid,否则可能会对数据库造成损害。
所以, 1.得到mongodb的pid
$ pgrep mongo
你会得到mongo的pid,现在
$ kill
您也可以使用kill -15
答案 3 :(得分:4)
我更喜欢使用port
命令本身停止MongoDB服务器。
sudo port unload mongodb
再次开始。
sudo port load mongodb
答案 4 :(得分:3)
查看以下文档:
如果你在一个终端中启动它,你应该可以使用ctrl + 'c'
- 这将完全关闭。
但是,如果您使用的是launchctl,则会根据安装方式的具体说明进行操作。
如果您使用的是Homebrew,则为launchctl stop homebrew.mxcl.mongodb
答案 5 :(得分:2)
这是一个古老的问题,但也是我在搜索时找到的问题。
如果您使用brew
安装,那么解决方案实际上就是这个:
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist
答案 6 :(得分:0)
如果您通过自制软件安装了mongodb社区服务器,则可以执行以下操作:
brew services list
这将列出当前的服务,如下所示:
Name Status User Plist
mongodb-community started sangeeth /Users/sangeeth/Library/LaunchAgents/homebrew.mxcl.mongodb-community.plist
redis stopped
然后您可以通过先停止然后重新启动来重启mongodb:
brew services stop mongodb
brew services start mongodb
答案 7 :(得分:0)
如果该服务是通过brew运行的,则可以使用以下命令将其停止:
brew services stop mongodb
答案 8 :(得分:0)
其他人提供的解决方案曾经为我工作,但现在不再为我工作,如下所示。
brew services stop mongodb
brew services start mongodb
brew services list
给出
Name Status User Plist
mongodb-community started XXXXXXXXX /Users/XXXXXXXXX/Library/LaunchAgents/homebrew.mxcl.mongodb-community.plist
所以我用mongodb-community
代替了对我有用的mongodb
brew services stop mongodb-community
brew services start mongodb-community