我如何从mongo shell中查看mongo正在监听的端口?
在Mongo shell中如何查看Mongo正在监听的端口?
从Mongo shell中尝试以下命令:db.runCommand({whatsmyuri : 1})
,它将显示IP地址和端口号。
这是新功能吗?它在哪个版本的Mongo中出现的?该功能在版本3.0中新增。
这似乎显示了shell的端口或其他内容... 从lsof
命令的输出中:>mongod 14942 dmitrii 5u IPv4 0xc36ad5231f84011d 0t0 TCP *:27017 (LISTEN) 以及从whatsmyurl
命令的输出中:{ "you" : "127.0.0.1:50294", "ok" : 1 } 它们并不匹配。
这个方法对我来说有效,我在一个Docker容器中运行了Mongo。
问题的原因是用户想要从mongo shell中查看MongoDB正在监听的端口。然而,用户只能访问mongo shell,而不能使用系统shell。解决方法是运行serverCmdLineOpts()命令,该命令将返回命令行参数和配置文件中的参数,从而可以推断出mongod正在监听的端口。如果没有指定特定的端口选项,则mongod默认会监听27017和28017端口。
下面是一个示例:
db.serverCmdLineOpts() { "argv" : [ "./mongod", "-replSet", "test", "--rest", "--dbpath", "/data/test/r1", "--port", "30001" ], "parsed" : { "dbpath" : "/data/test/r1", "port" : 30001, "replSet" : "test", "rest" : true }, "ok" : 1 }
如果没有像上面示例中那样指定特定的端口选项,则mongod默认会监听27017和28017端口。
最后,如果用户运行serverCmdLineOpts()命令后返回的结果是`{ "argv" : [ "mongod" ], "parsed" : { }, "ok" : 1 }`,那么说明MongoDB正在使用默认端口。默认端口是27017。