如何检查MongoDB是否从shell脚本运行?

时间:2016-03-28 13:25:29

标签: mongodb shell cron crontab

这是我用来检查MongoDB状态的shell脚本。 checkmongo.sh每两分钟通过一次cron工作。

#!/bin/bash

echo "shell script called"
if pgrep mongo > /dev/null
then
    echo "MongoDB Running"
else
    echo "Stopped .. starting MongoDB"
        sudo service mongodb start
fi

Cron工作如下:

*/2 * * * * /etc/init.d/checkmongo.sh> /etc/init.d/cronjob.log 2>&1

无论MongoDb是否正在运行cronjob.log,内容始终为" MongoDB正在运行"。我究竟做错了什么 ?请帮忙。感谢

2 个答案:

答案 0 :(得分:1)

的Vinay,

有几件事:

1 - 您想检查MongoDB是否正在运行,或者您想检查它是否响应查询?

您当前的设计仅会告知是否存在名称中包含单词" mongo"运行。 我会设计一个"金丝雀查询"您可以使用mongo shell运行并使用结​​果来确定MongoDB是否正在运行。因此,在极少数情况下,MongoDB守护程序可能正在运行但没有响应,您可能会收到警报。

2 - 您的流程正在检查单词" mongo",mongoDB数据库的可执行文件是" mongod"。

您的脚本被称为" checkmongo"。每次脚本运行时都会出现一个" checkmongo"进程运行和if条件将始终为true。该脚本正在检测自身而不是mongod进程。

将搜索条件更改为mongod

  

如果pgrep mongod>的/ dev / null的

答案 1 :(得分:0)

#!/bin/bash

mongod_status=`service mongod status`
echo "${mongod_status}"

if [[ "${mongod_status}" == *"start/running"* ]]
then
    echo "MongoDB is already running."
else
    sudo service mongod start
    echo "Start MongoDB."
fi