Mongo mongod init.d脚本无法在CentOS上运行

时间:2014-11-05 19:01:28

标签: mongodb init.d

我试图弄清楚为什么提供的init.d脚本不能在CentOS上运行。我尝试手动启动它:

/etc/init.d/mongod start

但是我收到以下错误:

Starting mongod: /usr/bin/dirname: extra operand `2>&1.pid'
Try `/usr/bin/dirname --help' for more information.

我查看了它试图启动的脚本:

  daemon --user "$MONGO_USER" "$NUMACTL $mongod $OPTIONS >/dev/null 2>&1"

所以我看了mongod var定义的地方:

mongod=${MONGOD-/usr/bin/mongod}

也尝试过:

service mongod start

同样的错误。

不确定我设置错误,但我已经确认我有最新的脚本,但我无法启动mongod进程。

任何想法???

5 个答案:

答案 0 :(得分:1)

以下链接似乎可以很好地解决问题 https://ma.ttias.be/mongodb-startup-dirname-extra-operand-pid/

简而言之,一个坏脚本似乎已经分发,但它产生的输出无害,mongod仍在运行。如果您运行yum update,您将获得一个固定的脚本,但很可能mongod仍然会失败,因为脚本没有使它失败。检查您的mongo日志(通常是/var/log/mongodb/mongod.log,但如果在/etc/mongod.conf中以不同方式指定,则可以不同)。日志文件应告诉您它失败的真正原因。

答案 1 :(得分:0)

检查配置文件/etc/mongod.conf中的mongo pid文件位置:

awk -F'[:=]' -v IGNORECASE=1 '/^[[:blank:]]*pidfilepath[[:blank:]]*[:=][[:blank:]]*/{print $2}' /etc/mongod.conf

默认情况下,mongod.conf中应该有这一行:'pidfilepath = /var/run/mongodb/mongod.pid'。如果它不存在,请添加它。

如果您使用的是/etc/mongod.conf的YAML版本,请查看此问题:https://jira.mongodb.org/browse/SERVER-13595。简而言之,您需要在/etc/rc.d/init.d/mongod:

中更改此行
PIDFILE=`awk -F= '/^pidfilepath[[:blank:]]*=[[:blank:]]*/{print $2}' "$CONFIGFILE"`

为:

PIDFILE=`awk -F: '/^[[:blank:]]*pidFilePath[[:blank:]]*:[[:blank:]]*/{print $2}' "$CONFIGFILE" | tr -d ' '`

答案 2 :(得分:0)

对我来说问题出在pidfilepath中。 Init脚本无法像这样处理格式的路径

pidfilepath = /var/run/mongodb/mongod.pid

init脚本中的 PIDFILE变量包含'/var/run/mongodb/mongod.pid'而不是'/var/run/mongodb/mongod.pid'

FIX: 用这个替换PIDFILE行,它将起作用。

PIDFILE = awk -F= '/^pidfilepath[[:blank:]]*=[[:blank:]]*/{gsub(" ", "", $2);print $2}' "$CONFIGFILE"

答案 3 :(得分:0)

我也面临同样的问题。

修复方法是对脚本文件(/etc/init.d/mongod)进行一些小改动,如下所述:

line 63我想:

daemon --user "$MONGO_USER" "$NUMACTL $mongod $OPTIONS >/dev/null 2>&1"

daemon --user "$MONGO_USER" --pidfile "$PIDFILE" "$NUMACTL $mongod $OPTIONS >/dev/null 2>&1"

希望这有帮助!!!

答案 4 :(得分:-1)

它可能是initscript包中的RedHat错误: goog.le forum redhat bugzilla