如何从 shell 脚本中检查 MongoDB 是否为 运行?
How to check whether MongoDB is running from a shell script?
这是我用来检查 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 Running"。我究竟做错了什么 ?请帮忙。谢谢
维奈,
几件事:
1 -- 您是要检查 MongoDB 是否 运行ning 还是要检查它是否正在响应查询?
您当前的设计只会判断是否存在名称中包含单词 "mongo" 运行ning 的进程。
我会设计一个 "canary query" ,你可以 运行 与 mongo shell 并使用结果来确定 MongoDB 是否是 运行ning .因此,在极少数情况下,MongoDB 守护程序可能 运行ning 但没有响应,您可能会收到警报。
2 --您的进程正在检查单词 "mongo",mongoDB 数据库的可执行文件是 "mongod"。
您的脚本名为 "checkmongo"。每次编写 运行s 脚本时,都会有一个 "checkmongo" 进程 运行ning 并且 if 条件将始终为真。该脚本正在检测自身而不是 mongod 进程。
将您的搜索条件更改为 mongod
if pgrep mongod > /dev/null
#!/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
这是我用来检查 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 Running"。我究竟做错了什么 ?请帮忙。谢谢
维奈,
几件事:
1 -- 您是要检查 MongoDB 是否 运行ning 还是要检查它是否正在响应查询?
您当前的设计只会判断是否存在名称中包含单词 "mongo" 运行ning 的进程。 我会设计一个 "canary query" ,你可以 运行 与 mongo shell 并使用结果来确定 MongoDB 是否是 运行ning .因此,在极少数情况下,MongoDB 守护程序可能 运行ning 但没有响应,您可能会收到警报。
2 --您的进程正在检查单词 "mongo",mongoDB 数据库的可执行文件是 "mongod"。
您的脚本名为 "checkmongo"。每次编写 运行s 脚本时,都会有一个 "checkmongo" 进程 运行ning 并且 if 条件将始终为真。该脚本正在检测自身而不是 mongod 进程。
将您的搜索条件更改为 mongod
if pgrep mongod > /dev/null
#!/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