6

我有一个 shell 脚本来执行一些 mongo db 操作:

例如mongo testdb --eval "db.dropDatabase()"

但是,如果 mongod 服务器没有运行,我会得到:

MongoDB shell version: 2.0.4
connecting to: testdb
Tue May 14 04:33:58 Error: couldn't connect to server 127.0.0.1 shell/mongo.js:84

有没有办法在mongo中检查连接状态?最终我想要类似的东西:

if(mongod is running):
    mongo testdb --eval "db.dropDatabase()"
else:
    echo "pls make sure your mongod is running"
    exit 1
4

4 回答 4

24

You should be able to create a bash script like this:

mongo --eval "db.stats()"  # do a simple harmless command of some sort

RESULT=$?   # returns 0 if mongo eval succeeds

if [ $RESULT -ne 0 ]; then
    echo "mongodb not running"
    exit 1
else
    echo "mongodb running!"
fi
于 2013-05-14T14:42:04.417 回答
4

尝试在您的 shell 脚本中运行它:-

pgrep mongod

如果该值为数字,则您知道该进程正在运行,如果您得到一个空值,则将其标记为服务未运行...

于 2017-07-07T06:55:43.527 回答
1

这就是我用来检查 mongod 是否启动的方法:

# this script checks if the mongod is running.
# if not, send mail
#

EMAILIST=dba@wherever



`ps -A | grep -q '[m]ongod'`

if [ "$?" -eq "0" ]; then
    exit 0
else
    echo "The mongod server SB2MDB01 is DOWN" | mailx \
    -s "Server DOWN: SB2MDB01" $EMAILIST
fi

exit 0
于 2013-08-16T14:14:55.677 回答
0

如果您拥有管理权限,您还可以执行以下操作sudo systemctl status mongod,它会为您提供许多有用的附加信息:

mongod.service - MongoDB Database Server
   Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
   Active: active (running) since Thu 2019-03-14 09:26:53 UTC; 5 weeks 9 days ago
     Docs: https://docs.mongodb.org/manual
 Main PID: 420 (mongod)
   CGroup: /system.slice/mongod.service
           └─420 /usr/bin/mongod --config /etc/mongod.conf
于 2019-03-16T16:39:11.573 回答