Mongo在CentOS上的mongod init.d脚本无法工作

10

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

/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变量的定义位置:

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

也尝试过:

service mongod start

同样的错误。

不确定我设置了什么错误,但我已经验证过我有最新的脚本,但我无法启动mongod进程。

有任何想法吗???


1
我在Red Hat Linux和MongoDB 2.6.5上看到了类似的行为,但是无论出现这个错误,MongoDB都会启动。 - Tommi
@Tommi:对于CentOS7,您可能想查看https://jira.mongodb.org/browse/SERVER-14679?filter=-2 - Markus W Mahlberg
@lostintranslation:你正在使用哪个版本的CentOS? - Markus W Mahlberg
2
我也遇到了这个问题。CentOS 6.6和MongoDB 2.6.5。 - Titi Wangsa bin Damhore
5个回答

1
以下链接似乎很好地解决了这个问题https://ma.ttias.be/mongodb-startup-dirname-extra-operand-pid/
简而言之,一个糟糕的脚本似乎已经被分发了,但它产生的输出并不会对mongod造成影响,mongod仍然可以运行。如果您运行yum update,您将得到一个修复后的脚本,但很可能mongod仍然会失败,因为该脚本没有导致其失败。检查您的mongo日志(通常在/var/log/mongodb/mongod.log,但如果在/etc/mongod.conf中指定,则可能不同)。日志文件应该告诉您它失败的真正原因。

我的mongod进程没有启动。我将进行升级以查看是否可以解决问题。 - lostintranslation

0

我也遇到了同样的问题。

解决方法是在脚本文件(/etc/init.d/mongod)中进行小改动,具体如下:

我猜是第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"

希望这能有所帮助!!!

0

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

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

默认情况下,mongod.conf 文件中应该有这一行代码:'pidfilepath = /var/run/mongodb/mongod.pid'。如果不存在,请添加它。
如果你正在使用 YAML 版本的 /etc/mongod.conf 文件,请查看这个问题: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 ' '`

好的,谢谢,我会试试看。顺便说一下,我也可以手动使用我的配置文件启动mongod。mongod -f /etc/mongod.conf。看起来不像是配置文件问题,更像是init.d脚本问题。另外,开始mongod:/usr/bin/dirname错误很棘手,应该尝试启动/usr/bin/mongod,/usr/bin/dirname似乎是脚本变量出了问题。 - lostintranslation

0

对我来说,问题出在pidfilepath上。初始化脚本无法处理这种格式的路径

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

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

修复方法: 将PIDFILE行替换为以下内容即可。

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


另一个解决方案可能是 https://github.com/mongodb/mongo/commit/50ca596ace0b1390482408f1b19ffb1f9170cab6 - Markus W Mahlberg

-1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接