MongoDB:错误:子进程失败,退出时出现错误编号14

时间:2015-05-27 07:58:02

标签: mongodb

我在Mac上运行MongoDB:

Shave:mongodb_simple Logan$ ./bin/mongod -f conf/mongod.conf
about to fork child process, waiting until server is ready for connections.
forked process: 5110
ERROR: child process failed, exited with error number 14

是因为我以错误的方式关闭了它吗?

13 个答案:

答案 0 :(得分:10)

你开始并且可能以错误的方式关闭mongo。

<强> 1。开始MONGODB

以后台类型启动mongo:class MyActor extends Actor { val exec = Executors.newFixedThreadPool(max_threads) def recieve = { case Request(file) => { exec.submit(new Runnable() { def run() { sys.process.Process(...), new java.io.File("/var/...")).!! self ! Done(file) // dont block, respond asynchronously } }) } case Done(file) => completeRequest(file) } }

  • mongod --dbpath /data/db --fork --logpath /dev/null是db的位置。如果您还没有创建一个=&gt;输入:/data/db
  • mkdir /data/db表示你想在后台启动mongo - deamon。
  • --fork表示您不想记录 - 您可以将--logpath /dev/null替换为/dev/null
  • 之类的路径来更改

<强> 2。关闭MONGODB

键入:/var/log/mongo.log,然后键入mongouse admin,即可连接到您的mongo。就像mongoDB

中的解释一样

如果这种技术由于某种原因不起作用,你总是可以杀死这个过程。

  1. 通过键入:db.shutdownServer()来查找mongodb进程PID,假设您的mongodb在端口27017上运行
  2. 键入lsof -i:27017,将kill <PID>替换为您找到上一个命令的值。

答案 1 :(得分:3)

检查文件/tmp/mongodb-27017.sock的所有权

应为mongod。我遇到了同样的错误,因为它是root:root

答案 2 :(得分:2)

这是因为您没有在传递给mongod选项的配置文件中正确配置-f实例。 重新访问您的配置文件,并确保正确配置eveything。

答案 3 :(得分:1)

对我而言是ulimit问题,mongo无法打开太多文件。

使用ulimit -n 10000

然而,作为通用指针查看mongo日志文件,它们将告诉进一步查看的位置。通常,日志文件位于/var/log/mongo.log,但请查看您的mongo配置文件。

答案 4 :(得分:1)

这对我有用:

在终端

中运行
sudo rm -rf mongod.lock
export LC_ALL=C

然后

sudo mongod --fork --config /xxxx/xx/mongod.conf --logpath /xxx/log/mongodb/mongodb.log

答案 5 :(得分:1)

检查mongod是否与pgrep mongodps -aef | grep mongodsystemctl status mongod一起运行

停止并重新启动它以检查问题是否消失 如果您以mongod -f /etc/mongod.conf开始mongod,请以pkill -9 mongod杀死它,然后以mongod -f /etc/mongod.conf开始 如果您将其运行为服务,请使用systemctl restart mongod重新启动它。

如果重新启动不起作用,请通过/var/log/message/var/log/mongodb/mongod.log文件找出问题。 进行操作时,请使用tail -f /var/log/messagetail -f /var/log/mongodb/mongod.log检查输出。

for example:
    1.
        Failed to unlink socket file /tmp/mongodb-27017.sock Operation not permitted
            delete the sock file with `rm`
    
    
    2.
        WiredTiger error (13) [1596090168:830936][25997:0x7fe22f208b80], wiredtiger_open: __posix_open_file, 672: /data/mongo/WiredTiger.turtle: handle-open: open: Permission denied Raw: [1596090168:830936][25997:0x7fe22f208b80], wiredtiger_open: __posix_open_file, 672: /data/mongo/WiredTiger.turtle: handle-open: open: Permission denied
        Failed to start up WiredTiger under any compatibility version
        Reason: 13: Permission denied
        
            check the file permission or owner with `ls` then change to the wright permission with `chmod` or right owner with `chown`

答案 6 :(得分:0)

我遇到了同样的问题,但我的系统时钟已关闭,因此我的SSL证书在技术上无效。更改为当前工作日期和时间date --set "<DD M Y H:M>"
仅通过查看mongodb日志找到此信息

答案 7 :(得分:0)

通过将mongodb下所有文件的所有者更改为/var/lib/mongodb/,它开始为我工作:

chown mongodb:mongodb -R /var/lib/mongodb/

答案 8 :(得分:0)

我在GCP托管的Compute Engine实例上遇到了此问题。
由于这是Google搜索该问题的最佳答案,因此,我将介绍对我有用的内容,并且是MongoDB(jira-link)记录的错误

  

在linux系统上,如果运行mongod的用户未设置语言环境或语言环境配置错误,mongod将无法开始打印堆栈跟踪。

可以通过组合几个步骤来解决此问题:

  1. 安装所需的语言包(ref):
sudo apt-get install language-pack-XX
  1. 运行更新语言环境(ref):
sudo update-locale
  1. 重新启动会话,然后再次检查同一mongo命令

  2. IFF上面的命令不起作用(对我而言不行),只需将以下内容手动添加到/etc/default/localeref)的文件中:

LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8
  1. 只是为了欣赏没有设置有关LC_ALL的持久性警告,请运行以下命令:
sudo dpkg-reconfigure locales

仅此而已,您现在可以使用MongoDB实例了!

答案 9 :(得分:0)

在我的mongodb设置中,为了保留内联到现有服务器的特定版本的mongoDB并避免将二进制文件放在根磁盘下,我更改了所有mongo二进制文件在不同目录中的路径。我必须使用rpm选项而不是yum选项(因为yum仅安装了最新版本,尽管提到了特定版本。)

rpm -ivh --prefix=/apps/mongodb /apps/mongo_rpm_packages/mongodb-org-*.rpm 

注意::放置二进制文件的默认路径为/var/lib/mongo

此方法不允许mongod用户获得必需的权限,或者其配置不正确,因此,我将user文件中的groupmongod.service更改为{{1 }}用户并成功使用以下方法成功启动了该过程:

root

答案 10 :(得分:0)

使用--shutdown

mongod --shutdown

然后

service mongod restart

有效!

{{3}}

答案 11 :(得分:0)

和我一起删除文件:/tmp/mongodb-27017.sock 然后重启mongod

答案 12 :(得分:0)

只需运行它并启动 mongod

/tmp/mongodb-27017.sock

systemctl start mongod