我怎样才能看到mongo从mongo shell听的端口?

如果我有一个mongo实例正在运行,我怎样才能从shell中检查它正在监听的端口号? 我认为, db.serverStatus()会做到这一点,但我没有看到它。 我看到这个

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

哪个接近…但不是。 build议? 我已阅读文档,似乎无法find任何将执行此操作的命令。

从系统shell中,您可以使用lsof (请参阅下面的Derick的答案)或netstat -an来查看过程实际上在做什么。 但是,假设您只能访问mongo shell(您的问题标题暗示),那么您可以运行serverCmdLineOpts()命令。 这个输出会给你所有在命令行上传递的参数(argv)和configuration文件中的参数(parsed),你可以根据这些信息推断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 console )上进行监听。 注意:有几个其他的参数可以改变端口而不需要显式的,参见这里:

https://docs.mongodb.org/manual/reference/configuration-options/#sharding.clusterRole

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

 sudo lsof -iTCP -sTCP:LISTEN | grep mongo 

尝试这个:

 db.runCommand({whatsmyuri : 1}) 

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

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

MongoDB支持一个getParameter命令,但只有当你已经连接到数据库(在这一点上你已经知道该端口)才有效。