首页 文章

mongodb正在运行吗?

提问于
浏览
91

我在我的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 - help用于帮助和启动选项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 version v1.6.5,pdfile version 4.5 Wed Feb 23 08:06:54 git version: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 2月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] web管理界面侦听端口28017

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

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

但是,如果我关闭初始shell我无法连接:

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

8 回答

  • 26

    检查:

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

    要么

    /etc/init.d/mongodb status     # for MongoDB version < 2.6
    
       /etc/init.d/mongod status      # for MongoDB version >= 2.6
    

    要么

    service mongod status
    

    看看mongod是否正在运行(你需要root用户来做这个,或者用 sudo 作为前缀) . 请注意,'grep'命令将始终显示为单独的进程 .

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

  • 1

    我发现:

    ps -ax | grep mongo
    

    要更加一致 . 返回的值可用于检测正在运行的mongod的实例数

  • 8

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

    nc -zvv localhost 27017
    

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

    要自动启动它,您可能需要查看this thread .

  • 6

    正确,关闭shell将停止MongoDB . 尝试使用 --fork 命令行arg进行mongod进程,这使得它作为守护进程运行 . 我确定必须有办法在机器启动时让它自动启动 .

    例如

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

    查看Starting and Stopping Mongo的完整文档 .

  • 2

    这应该工作得很好......

    pgrep mongod

  • 120

    要检查mongodb的当前运行状态,请使用: sudo service mongodb status

  • 4

    可能是因为我没有正确关闭我的开发服务器或类似的原因 . 要解决此问题,请删除锁定并启动服务器: sudo rm /var/lib/mongodb/mongod.lock ; sudo start mongodb

  • 37

    我知道这是用于php,但我在这里寻找节点的解决方案 . 使用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
    })
    

    使用其他驱动程序,您可以尝试 Build 连接,如果失败,您就知道mongo服务器已关闭 . Mongoskin需要实际进行一些调用(比如ping)因为它懒得连接 . 对于php,您可以使用try-to-connect方法 . 制作一个剧本!

    PHP:

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

相关问题