我如何从mongo shell中查看mongo正在监听的端口?

17 浏览
0 Comments

我如何从mongo shell中查看mongo正在监听的端口?

如果我有一个正在运行的Mongo实例,我怎么能够从shell中检查它正在监听的端口号呢?我以为db.serverStatus()可以做到,但是我没有看到它。我看到了这个

"connections" : {

"current" : 3,

"available" : 816

这个离要求很近...但还不够。有什么建议吗?我已经阅读了文档,但似乎找不到任何可以做到这一点的命令。

0
0 Comments

在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。

0
0 Comments

问题的原因是用户想要从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。

0
0 Comments

问题出现的原因:用户想要通过Mongo shell查看Mongo正在监听的端口,但是之前提供的命令使用的是操作系统的shell,而不是Mongo shell。

解决方法:在Mongo shell中,用户可以使用以下命令来查看Mongo正在监听的端口:

db.runCommand({whatsmyuri: 1})

这将返回Mongo实例正在监听的所有端口。

0