ChatGPT解决这个技术问题 Extra ChatGPT

mongodb在运行吗?

我已经在我的 Unix 服务器上安装了 Mongodb 和 PHP 驱动程序。

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

我可以跑:

-bash-3.2$ su  
Password:  
[root@xxx]# cd /var/lib  
[root@xxx]# ./mongodb-linux-i686-1.6.5/bin/mongod  
./mongodb-linux-i686-1.6.5/bin/mongod --help for help and startup options  
Wed Feb 23 08:06:54 MongoDB starting : pid=7271 port=27017 dbpath=/data/db/ 32-bit  

** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data  
**       see http://blog.mongodb.org/post/137788967/32-bit-limitations  

** WARNING: You are running in OpenVZ. This is known to be broken!!!  

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  
Feb 15 12:39:36 EST 2008 i686 BOOST_LIB_VERSION=1_37  
Wed Feb 23 08:06:54 [initandlisten] waiting for connections on port 27017  
Wed Feb 23 08:06:54 [websvr] web admin interface listening on port 28017  

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

-bash-3.2$ cd /var/lib  
-bash-3.2$ ./mongodb-linux-i686-1.6.5/bin/mongo  
MongoDB shell version: 1.6.5  
connecting to: 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 version: 1.6.5  
connecting to: test  
Wed Feb 23 08:25:10 Error: couldn't connect to server 127.0.0.1 (anon):1154  
exception: connect failed

Y
YakovL

检查:

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 mongodb status         # for MongoDB version < 2.6

service mongod status          # for MongoDB version >= 2.6

查看 mongod 是否正在运行(您需要是 root 才能执行此操作,或者在所有内容前加上 sudo)。请注意,“grep”命令也将始终显示为一个单独的进程。

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


您也可以执行 pgrep mongo
我得到了这个:501 5365 418 0 4:10pm ttys000 0:00.00 grep mongo,这是否意味着它正在运行?
service mongod status 对我不起作用,但 service mongodb status 有效。
从 mongo 2.6 开始,该服务是 mongod,之前是它的 mongodb,令人困惑的是
M
Mark Nguyen

我发现:

ps -ax | grep mongo

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


此外,您可能需要考虑添加一个过滤器以不返回您正在运行的 grep 进程。所以:ps -ax | grep -v grep | grep 蒙戈
C
Community

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

nc -zvv localhost 27017

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

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


是的,如果只是检查是否有东西在监听端口,这将有效。如果是这种情况,输出将包含 27017 open,否则为 Connection refused
M
Mo.

这应该可以正常工作...

pgrep mongod

m
magma

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


我认为 status 不需要 sudo
K
Kaizoku Gambare

在 Ubuntu (doc) 上

sudo systemctl status mongod

如果运行

● mongod.service - MongoDB Database Server
     Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
     Active: active (running) since Wed 2020-10-14 14:13:40 UTC; 3s ago
       Docs: https://docs.mongodb.org/manual
   Main PID: 1604 (mongod)
     Memory: 210.8M
     CGroup: /system.slice/mongod.service
             └─1604 /usr/bin/mongod --config /etc/mongod.conf

如果不运行

● mongod.service - MongoDB Database Server
     Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
     Active: inactive (dead)
       Docs: https://docs.mongodb.org/manual

启动 mongodb

sudo systemctl start mongod

A
AdaTheDev

正确,关闭 shell 将停止 MongoDB。尝试对 mongod 进程使用 --fork 命令行参数,使其作为守护程序运行。我不是 Unix 大师,但我确信一定有办法让它在机器启动时自动启动。

例如

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

查看 Starting and Stopping Mongo 上的完整文档。


谢谢。我得到了这个:[root@xxx lib]# ./mongodb-linux-i686-1.6.5/bin/mongod --fork --logpath /var/log/m ongodb.log --logappend all output going to: /var/log/mongodb.log forked process: 7518 但是当我关闭外壳并打开一个新的外壳时,我得到 Connect failed
嗯,对我有用(Ubuntu 64 位 VM,Mongo v1.7.6),所以我不确定为什么它不适合你。如果您无法使其正常工作,最好将其发布在 mongodb 论坛上:groups.google.com/group/mongodb-user
但是我用 & 启动它,现在我找不到 processid。
@bobobobo-您如何尝试查找进程ID?
ps -e | grep mongod
B
B--rian

您可以使用以下命令检查 MongoDB 状态,例如:sudo service MongoDB status 显示 MongoDB 服务的状态,如屏幕截图所示:

https://i.stack.imgur.com/6gGdn.png


T
Tass

可能是因为我没有正确关闭我的开发服务器或类似的原因。要修复它,请移除锁定并使用以下命令启动服务器:sudo rm /var/lib/mongodb/mongod.lock ; sudo start mongodb


R
Raedwald

要检查服务器是否以更适合在 shell 脚本中使用的方式systemd 操作系统上运行,请使用

systemctl is-active mongod

而不是

systemctl status mongod

B
B T

我知道这是针对 php 的,但我来这里是为了寻找 node.js 的解决方案。使用 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 服务器已关闭。 Mongoskin 需要实际进行一些调用(如 ping),因为它是延迟连接的。对于 php,您可以使用 try-to-connect 方法。做一个脚本!

PHP:

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

N
Ng Lok Chun

尝试这个:

sudo systemctl status mongod