如何检查MongoDB是否从shell脚本运行?
下面是我用来检查MongoDB状态的shell脚本。 checkmongo.sh
每两分钟通过一次cron作业。如何检查MongoDB是否从shell脚本运行?
#!/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”的进程正在运行。 我会设计一个“canary query”,你可以使用mongo shell运行并使用结果来确定MongoDB是否正在运行。因此,在极少数情况下,MongoDB守护进程可能正在运行但不能响应,您可能会收到警报。
2 - 您的进程正在检查单词“mongo”,mongoDB数据库的可执行文件是“mongod”。
您的脚本被称为“checkmongo”。每次脚本运行时都会有一个“checkmongo”进程正在运行,并且if条件将始终为真。该脚本正在检测自己而不是mongod进程。
改变你的搜索条件,以mongod的
如果p纤ep的mongod>的/ dev/null的
是的,我想知道MongoDB是否在运行。而且,如果它已经停止,我想自动启动它。 我确定没有其他进程在其名称中包含“mongo”这个词。 – Vinay
Vinay根据你的问题你脚本的名字包含mongo这个词。你的脚本叫做“checkmongo.sh”吗?检查“mongod”在你的条件是否会解决问题 – BigDataKid
谢谢。有效。 – Vinay
检查MongoDB的日志,看看那里有什么。可能它可能因某种原因而终止。 – Saleem
@Saleem问题是如果我从终端运行shell脚本一切正常。只有当我通过cron工作完成时才会出现问题。 – Vinay