停止:未知实例mongodb(Ubuntu)

28

我是Mongodb的新手。当我运行以下命令时:

sudo service mongodb start

它向我显示"mongodb启动/运行,进程3566"。但是当我尝试通过以下命令停止时:

sudo service mongodb stop

它显示停止:未知实例:。 有人有任何想法如何解决这个问题吗。

而且如果我执行sudo service mongodb restart,我会得到以下消息:

stop: Unknown instance: 
mongodb start/running, process 3644

PS: 如果我只使用 mongod,我可以启动服务器并通过输入 mongo 来连接 mongo shell。

请建议我如何解决这个问题,并在输入 service mongodb start 后如何连接 mongo shell。提前感谢您的帮助。


看起来这个问题已经在这里得到了回答 https://dev59.com/Fmkw5IYBdhLWcg3wMHoY - geakie
谢谢。但是我在日志目录 /var/log/mongodb/ 中找不到日志文件。 - senthil
5个回答

16

我刚刚遇到了这个问题。 很有可能问题出在你的配置文件中(显然,因为你重新安装了种子)

在mongodb.conf中,如果以服务方式调用,请勿设置fork = true。这将防止服务调用能够使用service mongodb.conf status/stop/restart访问它。

但是,删除fork=True行将缓解此问题。

请参见注释;即使此解决方案已被接受,请使用其他解决方案。


感谢@goingtharn:我们花了几个小时来解决这个问题,而这个方法起了作用。 - mstringer
1
@AlexP. 为什么那个解决方案是正确的解决方案(请查看Jonatan在该解决方案上的评论)?你可以更新你的解决方案以进行澄清。 - Nick Spacek
将fork从服务中移除最终解决了我的问题,我在这上面花费了好几天的时间... - Ignacio Bustos

12

出现“未知实例”错误的原因是因为 upstart 跟踪了错误的 PID 用于 fork 的 mongod 进程实例。但是,正确的解决方法不是像 @GoingTharn 建议的那样通过从配置中删除 fork=true 行来在前台运行该进程,而是通过添加帮助 upstart 捕获 fork 进程的正确 PID

expect daemon

/etc/init/mongodb.conf


非常感谢!在Ubuntu 12.04上运行得非常好! - user45949
3
请问,您能否提供更多细节信息?也许您可以复制正确的mongodb.conf文件,因为我对mongo没有经验,无法理解expect deamon。 - Rueta
2
为什么禁用fork不是一个合适的解决方案?mongodb文档指出,你应该将mongodb作为守护进程运行,“可以通过使用--fork或使用处理守护进程过程的控制进程(例如upstart和systemd)来实现”。 - jonatan

2

我遇到了和你一样的问题。可能是因为我的电脑意外崩溃了。我使用命令:sudo top(ubuntu),发现Mongo正在运行。我杀掉它并启动Mongo,一切都正常了。


2
我遇到了完全相同的问题,并采取了以下措施:
  • 删除mongod.lock文件(在我的情况下,此文件位于/var/lib/mongodb/)
  • 使用来自mongo客户端的以下命令

mongo --repair

这解决了问题。值得注意的是,在出现这个问题之前,我曾经遇到系统崩溃。因此,我认为问题是由于服务器守护程序非正常关闭引起的。

如果您不确定原因,可以查看日志文件(在我的情况下,我发现它位于/var/log/mongodb/)。那可能会给您一些有用的提示。

谢谢。


1
解析命令行错误:未知选项repair 请尝试使用'mongo --help'获取更多信息。 - mvladk

-2

我自己解决了问题。以下是我所做的内容:

 apt-get install mongodb

并覆盖了.conf文件。之后一切正常。希望这能帮助到某些人。


我认为重新安装mongodb不是一个解决方案。 - c24b

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