我想以编程方式获取mongodb加载的配置文件的路径。可以通过运行命令或其他东西来获得这个吗?
答案 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以默认值开头。