我需要能够在cli上启动/停止MongoDB.这很简单:
./mongod
但是要停止mongo DB,我需要首先运行open mongo shell然后键入两个命令:
$ ./mongo
使用管理员
db.shutdownServer()
所以我不知道如何在一行中停止mongo DB.有帮助吗?
Mar*_*ick 209
MongoDB手册中介绍了启动和停止MongoDB.它解释了通过shell,cli,驱动程序等停止MongoDB的各种选项.它还详细说明了错误地停止MongoDB的风险(例如数据损坏)以及有关不同kill信号的讨论.
另外,如果您使用Ubuntu或Debian的软件包管理器安装了MongoDB,那么您可以按如下方式停止mongodb(以前的mongod):
暴发户: sudo service mongodb stop
sysvinit的: sudo /etc/init.d/mongodb stop
或者在Mac OS X上
使用查找mongod进程的PID $ top
杀死这个过程$ kill <PID>
(Mongo文档有更多信息)
或者基于Red Hat的系统:
service mongod stop
或者在Windows上,如果您已安装名为的服务MongoDB
:
net stop MongoDB
如果没有作为服务安装(从Windows 7+开始),您可以运行:
taskkill /f /im mongod.exe
要了解有关不干净关闭问题的更多信息,如何最好地避免这种情况以及在发生不正常关闭时该怎么做,请参阅:在意外关闭后恢复数据.
Ste*_*nie 94
如果你真的想要一行等同于原始问题中的命令,你可以使用别名:
mongo --eval "db.getSiblingDB('admin').shutdownServer()"
Mark通过服务启动和停止MongoDB的答案是更典型(和推荐)的管理方法.
fra*_*srv 45
mongod --dbpath /path/to/your/db --shutdown
官方更多信息:http://docs.mongodb.org/manual/tutorial/manage-mongodb-processes/
Nan*_*mar 27
如果服务器作为终端中的前台进程运行,则可以通过按下来完成
Ctrl-C
Run Code Online (Sandbox Code Playgroud)
干净地关闭正在运行的服务器的另一种方法是使用shutdown命令,
> use admin
> db.shutdownServer();
Run Code Online (Sandbox Code Playgroud)
否则,可以使用kill之类的命令发送信号.如果mongod将10014作为其PID,则命令为
kill -2 10014
Run Code Online (Sandbox Code Playgroud)
t0r*_*r0X 13
我按照官方的MongoDB文档来停止信号.一个下面的命令,可以使用的(PID表示Process ID
的的mongod
处理):
kill PID
Run Code Online (Sandbox Code Playgroud)
发送信号15(SIGTERM),或
kill -2 PID
Run Code Online (Sandbox Code Playgroud)
发送信号2(SIGINT).
来自MongoDB文档的警告:
切勿使用kill -9
(即SIGKILL)终止mongod
实例.
如果您运行多个实例或者您不关心PID,则可以使用pkill
该信号发送到所有正在运行的mongod
进程:
pkill mongod
Run Code Online (Sandbox Code Playgroud)
要么
pkill -2 mongod
Run Code Online (Sandbox Code Playgroud)
或者,更安全,只对属于你的过程:
pkill -U $USER mongod
Run Code Online (Sandbox Code Playgroud)
要么
pkill -2 -U $USER mongod
Run Code Online (Sandbox Code Playgroud)
PS
注意:我使用了这个选项,因为mongod --shutdown
虽然在当前的MongoDB文档中提到过,但奇怪的是我的机器上没有这个功能(macOS,mongodb v3.4.10,安装时homebrew
):
Error parsing command line: unrecognised option '--shutdown'
PPS
(特定于macOS)在任何人想知道之前:不,我无法用命令阻止它,
brew services stop mongodb
因为我没有启动它
brew services start mongodb
.
我开始mongod
使用自定义命令行:-)
我的特殊情况是:
以前通过以下方式启动 mongod:
sudo -u mongod mongod -f /etc/mongod.conf
Run Code Online (Sandbox Code Playgroud)
现在,想停下来mongod
。
并参考官方文档Stop mongod Processes,尝试过:
(1)shutdownServer
但失败:
> use admin
switched to db admin
> db.shutdownServer()
2019-03-06T14:13:15.334+0800 E QUERY [thread1] Error: shutdownServer failed: {
"ok" : 0,
"errmsg" : "shutdown must run from localhost when running db without auth",
"code" : 13
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DB.prototype.shutdownServer@src/mongo/shell/db.js:302:1
@(shell):1:1
Run Code Online (Sandbox Code Playgroud)
(2)--shutdown
仍然失败:
# mongod --shutdown
There doesn't seem to be a server running with dbpath: /data/db
Run Code Online (Sandbox Code Playgroud)
(3) 之前的启动命令添加--shutdown:
sudo -u mongod mongod -f /etc/mongod.conf --shutdown
killing process with pid: 30213
failed to kill process: errno:1 Operation not permitted
Run Code Online (Sandbox Code Playgroud)
(4) 使用service
停止:
service mongod stop
Run Code Online (Sandbox Code Playgroud)
和
service mongod status
Run Code Online (Sandbox Code Playgroud)
显示预期Active: inactive (dead)
但mongod
实际上仍在运行,因为可以从 ps 中看到进程:
# ps -edaf | grep mongo | grep -v grep
root 30213 1 0 Feb04 ? 03:33:22 mongod --port PORT --dbpath=/var/lib/mongo
Run Code Online (Sandbox Code Playgroud)
而最后,真的被停止的mongod:
# sudo mongod -f /etc/mongod.conf --shutdown
killing process with pid: 30213
Run Code Online (Sandbox Code Playgroud)
直到现在,根本原因:仍然未知......
希望以上解决方案对您有用。
创建一个名为 mongostop.bat 的文件
将以下代码保存在其中
mongo admin --eval "db.shutdownServer()"
Run Code Online (Sandbox Code Playgroud)
运行文件 mongostop.bat 并成功停止 mongo
小智 6
基于斯坦尼的回答:
mongo --eval "db.getSiblingDB('admin').shutdownServer();quit()"
Run Code Online (Sandbox Code Playgroud)
我发现 mongo 在服务器关闭后尝试重新连接到数据库,这会导致延迟和错误消息。在关闭后添加 quit() 可以加快速度并减少消息,但仍然有一个。
我还想添加上下文 - 我正在启动和停止 mongod 作为其他代码测试用例的一部分,因此注册为服务不适合用例。我希望最终能得到在所有平台上运行的东西(现在在 Windows 中进行了测试)。我正在使用 mongod 3.6.9
归档时间: |
|
查看次数: |
327563 次 |
最近记录: |