使用 yum 在 OL 6.3 上安装了 MongoDb 2.6.3,但默认的 init 脚本在尝试停止和启动 mongod 服务时似乎都失败了。我可以追溯到停止时被$pid_file
检测为_/var/run/mongodb/mongod.pid
(即路径前面有一个空格)的问题。删除该空格后,mongod 可以停止。
但是,我似乎无法使用相同的脚本启动它(在停止修复之前也是这种情况)。发出命令后service mongod start
,我ERROR: child process failed, exited with error number 1
在日志中得到:ERROR: Cannot write pid file to /var/run/mongodb/mongod.pid: Success
,紧接着该***** SERVER RESTARTED *****
行,另外在引用的位置创建一个空的 pidfile。即使我增加日志详细程度,也不会显示任何其他内容。如果我以 root 身份运行 Mongod,它启动正常,但如果我使用非特权用户(mongod),就会发生上述情况。我可以通过执行最终在用户更改的情况下和在没有用户更改的情况下运行的命令来检测到这一点 - 附加runuser -s /bin/bash mongod -c "ulimit -S -c 0 ; numactl --interleave=all /usr/bin/mongod -f /etc/mongod.conf"
信息 - 我使用的是 2.4 配置格式:
logpath = /data/mongodb/log/mongod.log
logappend = true
fork = true
dbpath = /data/mongodb/db
auth = true
port = 27017
pidfilepath = /var/run/mongodb/mongod.pid
traceExceptions = true
verbose = true
vvvv = true
keyFile=/data/mongodb/keyfile
检查 pidfile 路径上的权限,它们似乎没问题(父级上的 rx,mongodb 上的 rwx)。此外,在另一台机器上(相同的操作系统),mongoDb 2.4 运行良好。有什么想法吗?
编辑- 如果我不使用 pidfile(没有设置 pidfilepath),一切似乎都工作正常,但这不算是一种解决方案,而是一种变通方法......
答案1
这似乎与SERVER-14679“(CentOS 7/RHEL 7)如果缺少 pid 文件,init.d 脚本应该为其创建目录”,已在 2.6.5 中修复。
同时,请按照以下说明编辑初始化脚本这次提交。
请在票据中添加一条注释,说明它适用于 Oracle Linux,以防修改后的初始化脚本按预期启动 MongoDB。