MongoDB在不执行守护进程的情况下运行

时间:2013-06-26 20:24:55

标签: mongodb ubuntu nosql

我在我的Ubuntu 13.04上安装了MondoDB,并尝试通过键入mongodsudo mongod来运行其守护程序,但我遇到了以下消息:

mongod --help for help and startup options
Thu Jun 27 05:11:02 [initandlisten] MongoDB starting : pid=11685 port=27017 dbpath=/data/db/ 64-bit host=myhost
Thu Jun 27 05:11:02 [initandlisten] db version v2.2.4, pdfile version 4.5
Thu Jun 27 05:11:02 [initandlisten] git version: nogitversion
Thu Jun 27 05:11:02 [initandlisten] build info: Linux batsu 3.2.0-37-generic #58-Ubuntu SMP Thu Jan 24 15:28:10 UTC 2013 x86_64 BOOST_LIB_VERSION=1_49
Thu Jun 27 05:11:02 [initandlisten] options: {}
Thu Jun 27 05:11:02 [initandlisten] journal dir=/data/db/journal
Thu Jun 27 05:11:02 [initandlisten] recover : no journal files present, no recovery needed
Thu Jun 27 05:11:02 [initandlisten] ERROR: listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:27017
Thu Jun 27 05:11:02 [websvr] ERROR: listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:28017
Thu Jun 27 05:11:02 [websvr] ERROR:   addr already in use
Thu Jun 27 05:11:02 [initandlisten] ERROR:   addr already in use
Thu Jun 27 05:11:02 [initandlisten] now exiting
Thu Jun 27 05:11:02 dbexit: 
Thu Jun 27 05:11:02 [initandlisten] shutdown: going to close listening sockets...
Thu Jun 27 05:11:02 [initandlisten] shutdown: going to flush diaglog...
Thu Jun 27 05:11:02 [initandlisten] shutdown: going to close sockets...
Thu Jun 27 05:11:02 [initandlisten] shutdown: waiting for fs preallocator...
Thu Jun 27 05:11:02 [initandlisten] shutdown: lock for final commit...
Thu Jun 27 05:11:02 [initandlisten] shutdown: final commit...
Thu Jun 27 05:11:02 [initandlisten] shutdown: closing all files...
Thu Jun 27 05:11:02 [initandlisten] closeAllFiles() finished
Thu Jun 27 05:11:02 [initandlisten] journalCleanup...
Thu Jun 27 05:11:02 [initandlisten] removeJournalFiles
Thu Jun 27 05:11:02 [initandlisten] shutdown: removing fs lock...
Thu Jun 27 05:11:02 dbexit: really exiting now

但是,当我尝试通过键入mongo来运行MongoDB时,即使没有运行它的守护进程,似乎我可以成功使用MongoDB。我没有启动任何守护进程,而且我的终端只有一个窗口,所以同时运行守护进程和主mongo程序是不可能的......

所以问题是,为什么我可以在不启动任何守护进程的情况下使用MongoDB?当我在OS X上使用MongoDB时,我总是必须在使用MongoDB之前运行守护进程。为了您的信息,我在OS X 10.8上通过Parallels 8安装了Ubuntu 13.04,并按照官方文档解释的相同路线安装了MongoDB。

或者因为我在OS X端口27017上使用MongoDB,所以我不必在Virtual Ubuntu上运行守护进程? (虽然我现在不在OS X上运行守护进程......)

3 个答案:

答案 0 :(得分:9)

当您安装mongo时,它应该已经为您运行服务器。

事实证明,“addr已经在使用中”(这意味着某些东西在mongod端口上运行)以及您可以成功使用它的事实。

您还可以通过运行ps wuax | grep mongo并在结果列表中查找mongod来测试这一点 - 这会列出您计算机上运行的所有进程,然后从此列表中删除任何未提及mongo的内容。您可能还会看到一行中包含“grep”的行 - 这是您当前正在运行的命令,您可以忽略该命令。

当我在计算机上运行时,会显示:

mongodb  22394  9.1  1.0 109244 33592 ?        Dsl  08:29   0:01 /usr/bin/mongod --config /etc/mongodb.conf
1001     22423  0.0  0.0   9436   904 pts/3    S+   08:29   0:00 grep --color=auto mongo

答案 1 :(得分:0)

Mongod服务正在运行,尝试使用sudo命令停止它并使用sudo命令启动mongod

sudo service mongodb stop
sudo mongod

答案 2 :(得分:0)

启动mongod进程

默认情况下,MongoDB将数据存储在/data/db directory中。在Windows上,MongoDB将数据存储在C:\data\db中。在所有平台上,MongoDB都会侦听来自端口27017上的客户端的连接。

要使用所有默认值启动MongoDB,请在系统shell中发出以下命令:

  

的mongod

停止mongod进程

在干净关机中,mongod完成所有待处理操作,将所有数据刷新到数据文件,并关闭所有数据文件。其他关闭是不洁净的,可能会损害数据文件的有效性。

要确保干净关闭,请始终使用以下方法之一关闭mongod实例:

使用shutdownServer()

使用db.shutdownServer()方法从mongo shell关闭mongod,如下所示:

  

使用admin
  db.shutdownServer()

从init脚本调用相同的方法可以实现相同的结果。

对于启用了授权的系统,用户只能在对管理数据库进行身份验证时发出db.shutdownServer(),或者在未启用身份验证的系统上通过localhost接口发出。

使用--shutdown

在Linux命令行中,使用以下命令中的--shutdown选项关闭mongod:

  

mongod --shutdown