Bash脚本监视Mongo数据库不起作用

时间:2019-07-08 18:23:34

标签: mongodb bash

我正在编写一个bash脚本来监视MongoDB的状态。一旦崩溃,则重新启动它。脚本如下:

def with_previous(iterable, *, fillvalue=None):
    """Yield each iterable item along with the item before it."""
    previous = fillvalue
    for item in iterable:
        yield previous, item
        previous = item

>>> list(with_previous([2, 1, 3], fillvalue=0))
[(0, 2), (2, 1), (1, 3)]

但是似乎不起作用。从系统返回:

while true
do
    ret = $("mongod --config /etc/mongod.conf")
    if $ret == 0
    then
        echo "I am out with code 0."
        break
    fi
    echo "running again"
done
echo "I am out with code $?"

不确定是什么问题。任何帮助表示赞赏。

2 个答案:

答案 0 :(得分:2)

您的代码中存在几个问题:

  • x, y = foo.size x2, y2 = math.floor(x-20), math.floor(y-50) 将尝试将$("mongod --config /etc/mongod.conf")作为命令运行,并包含空格
  • mongod --config /etc/mongod.conf语法错误

您可以这样重写它:

if

有关while :; do if mongod --config /etc/mongod.conf; then echo "I am out with code 0." break fi echo "running again" # probably sleep for a few seconds here done echo "I am out with code $?" 语句的信息,请参见:

答案 1 :(得分:2)

您的循环可以变得更简单:

while ! mongod --config /etc/mongod.conf; do
    echo "running again" >&2
    sleep 1
done
if test -n "$VERBOSE"; then echo 'modgod successful'; fi

请注意,关键字if执行命令。因此,if $ret == 0尝试运行带有参数$ret==的命令0(假设该变量为非空且不包含空格)。几乎可以肯定这不是您想要的。写if test "$ret" = 0if [ "$ret" = 0 ]更典型。如果$ret为空,则它试图使用单个参数==执行命令0