我正在运行mongo 1.8.2,并尝试查看如何在Mac上干净利落地关闭它。
在我们的ubuntu服务器上,我可以用以下命令从mongo shell中干净利落地关闭mongo:
> use admin
> db.shutdownServer()但在我的Mac上,它不会杀死mongod进程。输出显示它“应该”关闭,但是当I ps -ef | grep mongo时,它显示了一个活动的进程。此外,我仍然可以打开mongo shell并查询我的数据库,就像它从未关闭过一样。
我的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我知道我可以干掉这个进程,但我想做得更干净一些。
发布于 2011-12-14 13:12:16
这可能是因为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日新增:
如果你已经通过homebrew安装了mongodb,那么homebrew实际上有一个很方便的brew services命令。要显示当前正在运行的服务:
brew services list
启动mongodb:
brew services start mongodb-community
要在mongodb已经运行的情况下停止mongodb:
brew services stop mongodb-community
更新*
正如edufinn在评论中指出的那样,brew services现在可以作为用户定义的命令使用,并且可以使用以下命令进行安装:brew tap gapple/services。
发布于 2014-02-13 08:57:53
如果你用homebrew安装了mongodb,有一种更简单的方法:
使用launchctl列出mongo作业:
launchctl list | grep mongo停止mongo作业:
launchctl stop <job label>(对我来说,这就是launchctl stop homebrew.mxcl.mongodb)
启动mongo作业:
launchctl start <job label>发布于 2016-02-17 18:16:23
简单的方法是获取mongodb的进程id并杀死它。请注意,不要为此使用kill -9 pid,因为它可能会对数据库造成损坏。
因此,1.获取mongodb的pid
$ pgrep mongo
现在你会得到mongo的pid。
$ kill
您也可以使用kill -15
https://stackoverflow.com/questions/8495293
复制相似问题