如何获取mongodb加载的配置文件路径

时间:2014-07-25 11:25:20

标签: mongodb

我想以编程方式获取mongodb加载的配置文件的路径。可以通过运行命令或其他东西来获得这个吗?

3 个答案:

答案 0 :(得分:17)

在mongo shell中,您可以在admin数据库上运行getCmdLineOpts命令,该命令将为您提供用于启动mongod或mongos的命令行选项:

db.runCommand({getCmdLineOpts:1})
{
    "argv" : [
        "/usr/bin/mongod",
        "--config",
        "/etc/mongodb.conf"
    ],
    "parsed" : {
        "config" : "/etc/mongodb.conf",
        "net" : {
            "port" : 27017
        },
        "storage" : {
            "dbPath" : "/var/lib/mongodb"
        },
        "systemLog" : {
            "destination" : "file",
            "logAppend" : true,
            "path" : "/var/log/mongodb/mongodb.log"
        }
    },
    "ok" : 1
}

答案 1 :(得分:6)

在ubuntu 16上如果你运行systemctl status mongodb它会显示以下内容。在底部,您可以看到--config /etc/mongod.conf,它看起来就像我加载的配置文件的位置

   Loaded: loaded (/etc/systemd/system/mongodb.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2016-08-09 14:33:03 UTC; 3s ago
 Main PID: 6674 (mongod)
    Tasks: 21
   Memory: 40.1M
      CPU: 230ms
   CGroup: /system.slice/mongodb.service
           └─6674 /usr/bin/mongod --quiet --config /etc/mongod.conf

答案 2 :(得分:0)

这只是对其他答案的补充。在Linux中,另一种方法是先运行ps并检查是否传入了配置文件。

$ ps axww | grep mongod | grep -v grep
14886 ?        Sl     0:00 /usr/bin/mongod -f /etc/mongod.conf

以上情况适用于在Fedora 32中运行的mongod,但它适用于由systemd,upstart或任何进程管理器启动mongo的任何Linux。

在命令行参数中可能不会提及配置文件,就像您从命令行或mongo docker容器映像中手动启动mongod时一样。

$ docker run --name some-mongo -d mongo:latest
$ docker exec -t some-mongo bash -c "ps axww | grep mongod | grep -v grep"
  1 ?        Ssl    0:00 mongod --bind_ip_all

在这些情况下,mongo以默认值开头。

有关相关信息,请see this SO questionreference mongo documentation