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

los*_*ion 10 init.d mongodb

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

/etc/init.d/mongod start
Run Code Online (Sandbox Code Playgroud)

但是我收到以下错误:

Starting mongod: /usr/bin/dirname: extra operand `2>&1.pid'
Try `/usr/bin/dirname --help' for more information.
Run Code Online (Sandbox Code Playgroud)

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

  daemon --user "$MONGO_USER" "$NUMACTL $mongod $OPTIONS >/dev/null 2>&1"
Run Code Online (Sandbox Code Playgroud)

所以我看了mongod var的定义:

mongod=${MONGOD-/usr/bin/mongod}
Run Code Online (Sandbox Code Playgroud)

还尝试过:

service mongod start
Run Code Online (Sandbox Code Playgroud)

同样的错误.

不知道我设置错了,但我已经确认我有最新的脚本,但我无法启动mongod进程.

有任何想法吗???

anh*_*hlc 0

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

awk -F'[:=]' -v IGNORECASE=1 '/^[[:blank:]]*pidfilepath[[:blank:]]*[:=][[:blank:]]*/{print $2}' /etc/mongod.conf
Run Code Online (Sandbox Code Playgroud)

默认情况下,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"`
Run Code Online (Sandbox Code Playgroud)

到:

PIDFILE=`awk -F: '/^[[:blank:]]*pidFilePath[[:blank:]]*:[[:blank:]]*/{print $2}' "$CONFIGFILE" | tr -d ' '`
Run Code Online (Sandbox Code Playgroud)