mongodb在运行吗?

我已经在我的unix服务器上安装了mongodb和php驱动程序。

我的问题是如何判断mongodb是否正在运行? 有一个简单的命令行查询来检查状态? 如果我从shell启动它,如果我退出shell,它将继续运行(这似乎不是这种情况)。 我怎样才能让MongoDB连接持久化,并在服务器重新启动时自动启动?

我可以跑:

-bash-3.2 $ su
密码:
[root @ xxx]#cd / var / lib
[root @ xxx]#./mongodb-linux-i686-1.6.5/bin/mongod
./mongodb-linux-i686-1.6.5/bin/mongod – 帮助和启动选项
Wed Feb 23 08:06:54 MongoDB开始:pid = 7271 port = 27017 dbpath = / data / db / 32-bit

**注意:使用MongoDB 32位时,限制在大约2千兆字节的数据
**请参阅http://blog.mongodb.org/post/137788967/32-bit-limitations

**警告:您在OpenVZ中运行。 这已知是打破了!

Wed Feb 23 08:06:54 db版本v1.6.5,pdfile版本4.5
Wed Feb 23 08:06:54 git版本:0eb017e9b2828155a67c5612183337b89e12e291
Wed Feb 23 08:06:54 sys info:Linux domU-12-31-39-01-70-B4 2.6.21.7-2.fc8xen#1 SMP Fri
Feb 15 12:39:36 EST 2008 i686 BOOST_LIB_VERSION = 1_37
Wed Feb 23 08:06:54 [initandlisten]正在等待27017端口的连接
Wed Feb 23 08:06:54 [websvr]在端口28017上监听webpipe理界面

如果我打开一个单独的shell,我可以然后连接到mongodb:

-bash-3.2 $ cd / var / lib
-bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
MongoDBshell版本:1.6.5
连接到:testing
db.foo.find()
{“_id”:ObjectId(“4d63d7d3eb95985ab19c8feb”),“a”:1}

但是,如果我closures最初的shell我不能连接:

-bash-3.2 $ cd / var / lib
-bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
MongoDBshell版本:1.6.5
连接到:testing
Wed Feb 23 08:25:10错误:无法连接到服务器127.0.0.1(匿名):1154
exception:连接失败

检查以下任一:

ps -edaf | grep mongo | grep -v grep # "ps" flags may differ on your OS 

要么

  /etc/init.d/mongod status 

要么

  service mongod status 

看是否mongod正在运行(您需要root用户才能执行此操作,或者使用sudo前缀所有内容)

检查日志文件/var/log/mongo/mongo.log查看是否有任何问题报告

我发现:

 ps -ax | grep mongo 

要更加一致。 返回的值可以用来检测有多less个mongod实例正在运行

为了快速检查mongodb是否正在运行,这个快速的nc技巧会让你知道。

 nc -zvv localhost 27017 

以上命令假定您正在localhost上的默认端口上运行它。

为了自动启动它,你可能想看看这个线程 。

正确的,closuresshell会停止MongoDB。 尝试使用--fork命令行arg作为mongod进程,使其作为守护程序运行。 我不是Unix专家,但是我确定在机器启动时必须有一种方法让它自动启动。

例如

 mongod --fork --logpath /var/log/mongodb.log --logappend 

查看有关启动和停止Mongo的完整文档。

可能是因为我没有正确closures我的开发服务器或类似的原因。 要解决这个问题,请取出锁并使用以下sudo rm /var/lib/mongodb/mongod.lock ; sudo start mongodb启动服务器: sudo rm /var/lib/mongodb/mongod.lock ; sudo start mongodb sudo rm /var/lib/mongodb/mongod.lock ; sudo start mongodb

我知道这是为PHP,但我到这里寻找节点的解决scheme。 使用mongoskin:

 mongodb.admin().ping(function(err) { if(err === null) // true - you got a conntion, congratulations else if(err.message.indexOf('failed to connect') !== -1) // false - database isn't around else // actual error, do something about it }) 

与其他驱动程序,你可以尝试连接,如果失败,你知道mongo服务器的closures。 实际上Mongoskin需要打一些电话(如ping),因为它连接起来很懒惰。 对于PHP,你可以使用try-to-connect方法。 做一个脚本!

PHP:

 $dbIsRunning = true try { $m = new MongoClient('localhost:27017'); } catch($e) { $dbIsRunning = false } 

这应该工作正常…

pgrep mongod