Mongodb &引用;dirname:缺少操作数;启动mongod服务时出错

Mongodb &引用;dirname:缺少操作数;启动mongod服务时出错,mongodb,Mongodb,我最近在我们的Red Hat enterprise Linux服务器上安装了mongo 2.6.5版本。一切正常,直到我决定在/etc/mongod.conf文件中进行更改。我注意到,从上面的版本2.6开始,mongo支持YAML fomat中的conf文件。(我想进行更改的原因是,我想在mongo实例上启用身份验证) 我更改了我的配置文件,该文件以前的样子如下(我只添加了配置的一部分): #mongod.conf #在哪里登录 logpath=/var/log/mongodb/mongod.

我最近在我们的Red Hat enterprise Linux服务器上安装了mongo 2.6.5版本。一切正常,直到我决定在/etc/mongod.conf文件中进行更改。我注意到,从上面的版本2.6开始,mongo支持YAML fomat中的conf文件。(我想进行更改的原因是,我想在mongo实例上启用身份验证)

我更改了我的配置文件,该文件以前的样子如下(我只添加了配置的一部分):

#mongod.conf
#在哪里登录
logpath=/var/log/mongodb/mongod.log
logappend=true
#在后台分叉并运行
fork=true
#端口=27017
dbpath=/var/lib/mongo
#文件的位置
pidfilepath=/var/run/mongodb/mongod.pid
我更改的文件mongod.conf现在如下所示:

systemLog:
目的地:文件
路径:“/var/log/mongodb/mongodb.log”
logAppend:true
存储:
数据库路径:“/var/lib/mongo”
期刊:
已启用:true
流程管理:
pidFilePath:“/var/run/mongodb/mongod.pid”
福克:是的
安全:
授权:对![在此处输入图像描述][1]
现在,当我尝试运行mongod服务时,它给了我一个错误(见附图): dirname:缺少操作数 有关详细信息,请尝试“dirname--help” 正在启动mongod:[失败]


当我将mongod.conf文件恢复到以前的版本时,服务运行正常。我是否需要更改mongo安装中的某些内容以使其使用YAML格式的配置?

看起来,尽管mongod支持YAML配置文件,但initscripts尚未修改以处理它们。

我一直在Centos 6.6上的mongo 2.6.5中跟踪相同的问题。错误来自
/etc/init.d/functions
,它试图查找程序的基本名称,然后自动生成PID文件。这被
守护进程调用,如下所示:

daemon --user mongod ' /usr/bin/mongod  -f /etc/mongod.conf >/dev/null 2>&1'
base变量获取最后一个斜杠之后的所有内容,并且pidfile默认为base+“.pid”。通常,您可以执行如下操作:

daemon --user nobody /usr/bin/some-service
# base:  some-service
# pid file:  some-service.pid
对于mongo,基本变量设置为“null 2>&1”,然后运行
basename null 2>&1
会导致您看到的错误。解决此问题的最简单方法是使用
daemon
的check
命令行参数指定要运行的实际二进制文件。编辑
/etc/init.d/mongod
并搜索第111行:

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

# New, working version
daemon --user "$MONGO_USER" --check "$mongod" "$NUMACTL $mongod $OPTIONS >/dev/null 2>&1"
没有深入探讨这个问题,这个论点似乎因为疏忽而被遗漏了。

有几点:

  • 确保在/etc/mongod.conf中定义了PID文件位置

    pidfilepath=/var/run/mongodb/mongod.pid
    
  • 将/etc/init.d/mongod中的“daemon”行更改为显式使用PID文件

    daemon --user "$MONGO_USER" --check "$mongod" --pidfile "$PIDFILE" "$NUMACTL $mongod $OPTIONS >/dev/null 2>&1"
    
  • 此外,确保以下内容均归mongod所有

    • /var/log/mongodb
    • /var/run/mongodb
    • 您的数据库路径

      • 此错误存在Jira问题


        他们有一个很好的解决方法来更改用于在配置文件中查找值的正则表达式。

        配置看起来不错
        dirname
        是一个命令行程序,听起来问题在于如何运行服务。你查过了吗?我没看到你的依恋,但我突然明白了,尽管mongod已经开始了。这是否与内核更新巧合?