【问题标题】:Starting mongod fork, ERROR: child process failed, exited with error number 1启动 mongod fork,错误:子进程失败,以错误号 1 退出
【发布时间】:2015-04-19 21:30:23
【问题描述】:

在尝试运行命令时

mongod --fork --logpath /var/log/mongodb.log

在 amazon ec2 32 位实例(Amazon Linux AMI 版本 2014.09)上,我遇到以下错误:

2015-02-18T18:14:09.007+0000 
2015-02-18T18:14:09.007+0000 warning: 32-bit servers don't have journaling    
enabled by default. Please use --journal if you want durability.
2015-02-18T18:14:09.007+0000 
about to fork child process, waiting until server is ready for connections.
forked process: 17116
ERROR: child process failed, exited with error number 1

我还注意到在此过程中没有创建日志文件。

【问题讨论】:

  • /data/db 存在吗?错误号 1:#define EPERM 1 /* Operation not permitted */。这也可以解释为什么没有创建日志文件 - 不允许用户创建。
  • 确实如此,我也有一些我一直在使用的数据库文件。
  • @mnemosyn ls -al total 245772 drwxr-xr-x 2 ec2-user root 4096 Feb 5 17:14 . drwxr-xr-x 3 root root 4096 Feb 4 17:40 .. -rw------- 1 ec2-user ec2-user 67108864 Feb 5 21:42 brands.0 -rw------- 1 ec2-user ec2-user 16777216 Feb 5 21:42 brands.ns -rw------- 1 ec2-user ec2-user 67108864 Feb 4 22:54 brandsTest2.0 -rw------- 1 ec2-user ec2-user 16777216 Feb 4 22:54 brandsTest2.ns -rw------- 1 ec2-user ec2-user 67108864 Feb 18 17:52 local.0 -rw------- 1 ec2-user ec2-user 16777216 Feb 18 17:52 local.ns -rwxrwxr-x 1 ec2-user ec2-user 0 Feb 18 17:59 mongod.lock
  • 嗯,那么我的猜测似乎是错误的。我仍然会调查 errno 1 路线...
  • @mnemosyn 你在哪里找到错误代码?我在看https://github.com/mongodb/mongo/blob/master/docs/errors.md,但看不到。

标签: mongodb unix amazon-ec2


【解决方案1】:

我有同样的事情,结果证明是权限问题。如果子进程的所有者无法访问日志路径或日志路径不存在,则会失败。

我所做的是将日志目录放在我的主目录中:

mkdir ~/log
mongod --fork --logpath ~/log/mongodb.log

如果你真的想把它放在你的 /var/log 目录中,只需更改权限即可。

【讨论】:

  • 对于那些想知道的人,我不得不将 /var/log 上的权限更改为 777
  • @kabadisha 你真的不应该在 /var/log 上有 777 有很多潜在的敏感数据存储在该目录中。尝试将目录 perms 更改为 740 并首先创建日志文件。找到用户 mongod 正在运行并 chown 该文件。然后用 744 对文件进行 chmod。我只是在这里猜测,但几乎所有 perms 都比 /var/log 上的 777 好,祝你好运
  • 这是一个好点。我必须将 /var/log 目录分配给我的用户,然后授予 740 权限。
  • 这很有趣。我正把头撞到墙上。谢谢!
  • 如何从 docker-compose 文件运行 mongod? @onetwopunch
【解决方案2】:

我也遇到了同样的错误,但是我使用了 sudo 并运行了sudo mongod --fork --logpath /var/log/mongodb.log。正如@jryancanty 提到的,这只是一个权限错误。

【讨论】:

  • 我仍然有这个问题,即使使用了“sudo”
  • 使用 sudo 只是将错误编号从 1 更改为 100。
【解决方案3】:

对于遇到此错误的任何其他人 [即使您使用 sudo 运行它],请确保您将日志文件的文件名声明为:/var/log/mongodb.log。我只有 /var/log/ 中的目录路径,因为我错过了阅读 mongo 文档。

【讨论】:

    【解决方案4】:

    我已经删除了旧的

    /var/run/mongodb/mongod.pid
    

    一切正常。

    【讨论】:

    • 我的无法运行,因为此文件丢失:(。说Cannot write pid file to /var/run/mongodb/mongod.pid: No such file or directory
    【解决方案5】:

    之后我也有同样的问题

    sudo rm /tmp/mongodb-27017.sock
    sudo chown mongod:mongod /var/log/mongodb
    

    一切正常。

    【讨论】:

    • 这为我解决了问题。只需更改目录的权限即可将我的错误消息从 1 更改为 100。我需要让 mongod 用户成为目录的所有者,并且它可以工作。
    • 这对我也有用,因为尽管设置了正确的权限,但我还是有错误。
    【解决方案6】:

    如果你有keyfile,也有可能是权限太开放了。确保将其设置为 0400

    【讨论】:

      【解决方案7】:

      我错误地将日志路径设置为 var/mongodb/db/mongo.log 而不是 /var/mongodb/db/mongo.log,因此 Mongo 试图访问 /home 中不存在的文件夹。

      【讨论】:

        【解决方案8】:

        如果您在日志文件中看到 /tmp/mongodb-27017.sock 的问题,这可能会起作用

        sudo chown mongodb:mongodb /tmp/mongodb-27017.sock

        【讨论】:

          【解决方案9】:

          sudo mongod --fork --logpath /var/log/mongodb.log

          在 ubuntu 中无需更改 /var 中的权限,在 logpath 中使用完整的日志文件名

          【讨论】:

            【解决方案10】:

            由于用户权限,我遇到了同样的问题,当我使用无权创建文件的用户登录 ubuntu 时,也会发生此错误。

            所以,您必须使用 sudo 运行命令。 :)

            【讨论】:

              【解决方案11】:

              从 EPEL repo (2.x) 中删除 mongo 并从 mongo repo (4.x) 安装 mongo 后,我遇到了同样的问题。

              journalctl -xe 说:

              ERROR: child process failed, exited with error number 1
              

              在我的情况下,我有具有 root 权限的旧日志文件。 只需设置正确的权限或删除日志并检查日志目录权限即可。

              【讨论】:

                【解决方案12】:

                如果您已经有用于存储 db 数据的 dbpath 文件夹并且在 conf 文件中为 dbpath 提供了新路径,也会生成此错误。当您为 dbpath、logs 和 PID 创建新文件夹时,请删除旧文件夹(如果它们存在)。

                【讨论】:

                  猜你喜欢
                  • 2017-01-10
                  • 2016-12-14
                  • 1970-01-01
                  • 1970-01-01
                  • 2013-04-04
                  • 2022-07-19
                  • 1970-01-01
                  • 2021-03-11
                  • 1970-01-01
                  相关资源
                  最近更新 更多