我能不能只杀掉mongod来停止Mongo?

47

我刚开始接触Mongo数据库。按照这里的步骤在Mac OS X上运行mongod。我从命令行启动了两个mongod进程。如果需要停止mongod进程,我只需执行kill <pid of mongod>命令。这是停止mongod的推荐方法吗?

11个回答

59

最终成功了(Ubuntu 15.04),使用以下步骤:

//1.通过名称查找进程:

$ pgrep mongo

1350

//2.关闭mongod进程

$ kill 1350

我必须在“kill”语句前加上“sudo”。我使用的是macOS Catalina。 - mike
killall mongod 也可以使用(仅限于您不想杀死特定实例时)。 - yves amsellem

50

虽然有点晚了,但我现在也遇到了同样的问题,并且我找到了一个简单的解决方法:

Esan-iMac:~$mongo admin --eval "db.shutdownServer()"

MongoDB shell version: 2.6.4
connecting to: admin
2015-02-19T10:54:22.574+0200 DBClientCursor::init call() failed
server should be down...

它给出了一些奇怪的信息,但它能够工作。

我还为其创建了一个别名命令,以便轻松运行它。

alias stop-mongo='/opt/mongo/release/bin/mongo admin --eval "db.shutdownServer()"'

如果您手动启动Mongo(例如,使用--fork选项),则至少可以这样做。


20

Esa所提供的答案是正确的。另外,关于是否推荐使用kill命令- 是的,但要使用标志-2或不使用标志,永远不要使用-9。如文档所述。

kill -2 `pgrep mongo`

别名

alias stopmongo='kill -2 `pgrep mongo`'

你能解释一下为什么我们需要使用 -2 标志吗? - Sujay U N
3
请检查Mongo官方文档的链接,这是Mongo开发人员推荐的。我提到不要使用-9的原因是,据我所知(并不完美),它是一个终止信号,可以立即杀死应用程序。以通俗易懂的语言来说,-2是一种软中断,它告诉Mongo完成其关键任务,不接受任何未来的数据读写请求并退出。这可以防止数据损坏。有关信号的进一步阅读,请参见http://tldp.org/LDP/Bash-Beginners-Guide/html/sect_12_01.html。 - saurabheights
在最糟糕的情况下,当-2无法工作时,你必须使用-9。 - Anthony

5

Windows

use admin
db.shutdownServer()

对于启用了认证的系统,只有在通过管理员数据库或在未启用认证的系统上通过本地主机接口进行身份验证后,用户才能发出db.shutdownServer()。

Linux

mongod --shutdown

您可以使用以下方式:
kill <mongod process ID> 

请查看http://docs.mongodb.org/manual/tutorial/manage-mongodb-processes/了解如何管理MongoDB进程。

3
谢谢。我想补充一下,我在 Mac 上运行的是 Mongo。有趣的是,在 Mac 上 mongod 没有 shutdown 选项 :(( - Michael
请问有没有一种干净的方式可以在Mac OS X上停止mongod? - Juan Rada

4

针对2020年:

Mongo应该通过Brew安装,而不是采用传统的Linux风格:即下载/解压缩/配置/运行tar.gz软件包。

使用Brew方式,如果通过brew tap mongodb/brewbrew install mongodb-community安装了Mongo,那么你可以按照以下步骤停止(并禁用)它,就像在Linux上使用Systemd一样。

~ brew services list
Name              Status  User     Plist
mongodb-community started zhengxin /Users/zhengxin/Library/LaunchAgents/homebrew.mxcl.mongodb-community.plist

~ brew services stop mongodb-community
==> Successfully stopped `mongodb-community` (label: homebrew.mxcl.mongodb-community)

谢谢你的回答!我使用的是Mac,它对我帮助很大! - skiabox
今天,MongoDB社区版在许多发行版中都有自己的专用存储库,这是在Linux上安装它的“官方”方式根据文档 - TheMechanic

2

terminal$ kill $(pgrep mongod)


2

这个命令可以帮助终止mongod进程。sudo pkill -f mongod


1
最简单的方法是使用 Ctrl + C,在 El Capitan 下的阻塞 bash shell 中对我有效。

1
问题在于它正在后台运行,终端不可用。 - Soldeplata Saketos

1

在mac系统中,“just killing the mongod”可能会遇到问题...

  1. mongod在mac系统中作为服务由“launchctl”保持运行。“just killing”将杀死该服务。

  2. 现在要使用mongo shell,我们需要再次运行mongod,但是对于其他开发目的,如从node连接,我们需要确保一遍又一遍地运行mongod。

  3. 其他替代方法是关闭系统并重新启动。

更好的方式:

开始使用launchctl来管理此类服务。这里是一个示例:

什么是在linux / OS X上启动mongod服务的正确方法?


1
如果您已经配置了自动启动,杀死进程是无效的,新的进程会立即启动。为了禁用自动启动,您需要首先找到自动启动文件。您可以尝试使用以下命令查找文件:find / -name "mongodb.plist"locate "mongodb.plist"。找到文件后,使用以下命令删除自动启动配置(如果您使用Homebrew进行安装,则无需使用sudo):
sudo launchctl unload -w <file>

如果您想要终止进程,而且它没有使用自动启动,请记住不要使用kill -9 <PID>,这可能会损坏数据库。使用kill -1 <PID>或者kill -15 <PID>应该是安全的选项。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接