Mongodb 跑了吗?

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

我的问题是,我怎么知道蒙戈德布是不是在逃跑?是否有一个简单的命令行查询来检查状态?如果我从 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
384887 次浏览

正确,关闭 shell 将停止 MongoDB。尝试使用 monGod 进程的 --fork命令行 arg 代替它作为守护进程运行。我不是 Unix 的专家,但我确信一定有办法让它在机器启动时自动启动。

例如:。

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

查看关于 开始和停止 Mongo的完整文档。

检查:

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,看看是否报告了任何问题。

我发现:

ps -ax | grep mongo

更加一致。返回的值可以用来检测运行了多少 mongod 实例

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

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

nc -zvv localhost 27017

上面的命令假设您正在本地主机上的默认端口上运行它。

要自动启动它,您可能需要查看 这根线

我知道这是为了 php,但我在这里寻找一个解决方案的节点。使用黄瓜:

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 服务器关闭了。Mongooskin 实际上需要做一些调用(如 ping) ,因为它懒惰地连接。对于 php,可以使用 try-to-connect 方法。写个剧本!

PHP:

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

应该没问题。

pgrep mongod

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

您可以使用以下命令来检查 MongoDB 状态,例如: sudo service MongoDB status,它像屏幕快照一样显示 MongoDB 服务的状态:

MongoDB status

在 Ubuntu 上(医生)

修道院系统状态蒙神

如果逃跑的话

● 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

开始蒙哥布

sudo systemctl start mongod

若要检查服务器是否正在运行 systemd操作系统上,请使用

systemctl is-active mongod

而不是

systemctl status mongod

试试这个:

sudo systemctl status mongod