如果我有一个mongo实例正在运行,我如何检查它从shell中侦听的端口号?我认为db.serverStatus()
会这样做,但我没有看到它。我看到了这个
"connections" : {
"current" : 3,
"available" : 816
哪个很接近......但没有。建议?我已经阅读了文档,似乎无法找到任何可以执行此操作的命令。
答案 0 :(得分:212)
您可以通过运行以下命令从操作系统shell执行此操作:
sudo lsof -iTCP -sTCP:LISTEN | grep mongo
答案 1 :(得分:66)
在系统shell中,您可以使用lsof
(请参阅下面的Derick答案)或netstat -an
来查看进程实际执行的操作。但是,假设您只能访问mongo
shell(问题标题所暗示的),那么您可以运行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 console)上进行侦听。注意:还有一些其他参数可以在不明确的情况下更改端口,请参见此处:
https://docs.mongodb.org/manual/reference/configuration-options/#sharding.clusterRole
答案 2 :(得分:26)
试试这个:
db.runCommand({whatsmyuri : 1})
它将显示IP地址和端口号。
答案 3 :(得分:10)
MongoDB默认只侦听一个端口(27017)。如果--rest
接口处于活动状态,则端口28017(27017 + 1000)也将打开处理Web请求以获取详细信息。
MongoDB支持getParameter
命令,但只有在您已经连接到数据库(此时您已经知道该端口)时才能使用。
答案 4 :(得分:3)
你可以试试,从 mongo shell:
使用这个命令测试mongo shell是否有连接到 正确的数据库实例。
connection to <IP>:<PORT>
对于未分片的集合,explain 返回以下 serverInfo MongoDB 实例的信息:
"serverInfo" : {
"host" : <string>,
"port" : <int>,
"version" : <string>,
"gitVersion" : <string>
}
答案 5 :(得分:1)
尝试以下命令,这对我有用:
sudo lsof -iTCP -sTCP:LISTEN | grep mongo