Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查MongoDB是否从shell脚本运行?_Mongodb_Shell_Cron_Crontab - Fatal编程技术网

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

如何检查MongoDB是否从shell脚本运行?,mongodb,shell,cron,crontab,Mongodb,Shell,Cron,Crontab,下面是我用来检查MongoDB状态的shell脚本每两分钟通过cron作业检查mongo.sh #!/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 *

下面是我用来检查MongoDB状态的shell脚本<代码>每两分钟通过cron作业检查mongo.sh

#!/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正在运行”的内容。我做错了什么?请帮忙。谢谢你,维奈

有几件事:

1--您是要检查MongoDB是否正在运行,还是要检查它是否在响应查询

您当前的设计只会告诉您是否有一个名称中包含单词“mongo”的进程正在运行。 我将设计一个“金丝雀查询”,您可以使用MongoShell运行它,并使用结果来确定MongoDB是否正在运行。因此,在MongoDB守护进程可能正在运行但没有响应的罕见情况下,您可能会收到警报

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

您的脚本称为“checkmongo”。每次脚本运行时,都会有一个“checkmongo”进程运行,并且if条件始终为true。脚本正在检测自身,而不是mongod进程

将搜索条件更改为mongod

如果pgrep mongod>/dev/null


检查你的mongodb日志,看看有什么。可能是因为某种原因终止了。@Saleem问题是,如果我从终端运行shell脚本,一切正常。只有通过cron作业进行操作时才会出现问题。是的,我想知道MongoDB是否正在运行。如果它停止了,我想自动启动它。我相信没有其他进程的名称中有“mongo”这个词。Vinay根据您的问题,您的脚本的名称包含mongo这个词。您的脚本名为“checkmongo.sh”吗?检查if条件中的“mongod”将解决问题通常最好解释一个解决方案,而不是仅仅发布几行匿名代码。你可以阅读,也可以阅读
#!/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