我如何查看mongo shell正在监听哪些端口mongo?


99

如果我正在运行mongo实例,如何检查它正在从Shell侦听的端口号?我以为db.serverStatus()可以,但是我看不到。我看到这个

"connections" : {
    "current" : 3,
    "available" : 816

哪一个很近...但是没有。有什么建议吗?我已经阅读了文档,似乎找不到任何可以执行此操作的命令。


您需要mongo shell吗?还是常规的unix shell会做?:)
Sergio Tulentsev 2012年

@SergioTulentsev我特别想知道这是否可能在mongo shell内实现-因为我已经找到了接近的信息。
jcollum 2012年

Answers:


72

您可以从系统外壳程序使用lsof(请参阅下面的Derick的答案)或netstat -an查看进程实际在做什么。但是,假设您只能访问mongo外壳程序(问题标题所隐含的意思),则可以运行serverCmdLineOpts()命令。该输出将为您提供在命令行上传递的所有参数(argv)和配置文件中的参数(已解析),您可以mongod基于该信息推断端口正在侦听。这是一个例子:

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(http控制台)上进行监听。注意:还有一些其他参数可以在不显式的情况下更改端口,请参见此处:

https://docs.mongodb.org/manual/reference/configuration-options/#sharding.cluster角色


4
我的结果是:{ "argv" : [ "mongod" ], "parsed" : { }, "ok" : 1 }那并不能告诉我太多。我猜这是在告诉我我在默认端口上。
jcollum'2

5
正确-如果未完全指定(并且在您的情况下看起来像这样),则所有内容均为默认值,这使您处于27017
Adam Comerford

220

您可以通过运行以下命令从操作系统外壳中执行此操作:

sudo lsof -iTCP -sTCP:LISTEN | grep mongo

4
@SmartyTwiti我明确要求使用mongo shell的命令;lsof不起作用
jcollum

35

试试这个:

db.runCommand({whatsmyuri : 1})

它将显示IP地址和端口号。


那是新的吗?它出现在哪个版本的mongo中?
jcollum

1
@jcollum 3.0版具有此新功能。
Ganu 2015年

6
这似乎显示了外壳的端口或其他东西...输出来自lsof:> mongod 14942 dmitrii 5u IPv4 0xc36ad5231f84011d 0t0 TCP *:27017(LISTEN)并从whatsmyurl命令:{“ you”:“ 127.0.0.1:50294”,“ ok”:1它们不匹配。
dmi3y

12

默认情况下,MongoDB仅在一个端口上侦听(27017)。如果该--rest接口处于活动状态,则端口28017(27017 + 1000)也将打开,以处理Web请求以获取详细信息。

MongoDB支持getParameter命令,但是仅在您已经连接到数据库(此时您已经知道端口)的情况下才有效。


2
嗯,所以可以说,如果我已连接并且不知道端口,则必须为27017。如果端口不是27017,则必须知道该端口才能进行连接。听起来对吗?
jcollum 2012年

2

尝试执行以下命令,这对我有用:

sudo lsof -iTCP -sTCP:LISTEN | grep mongo
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.