我知道默认的 mongo 端口是,27017
并且我可以通过该端口连接到该实例。
但我尝试用其他方法解决这个问题。
我发现它mongo
正在运行,ps aux | grep mongo
我可以看到它/usr/bin/mongod --config /etc/mongod.conf
在/etc/mongod.conf
港口是27018
Netstatnetstat -tulnp | grep 2701
给了我
tcp 0 0 0.0.0.0:27017 0.0.0.0:* LISTEN -
tcp 0 0 0.0.0.0:27018 0.0.0.0:* LISTEN -
我不知道为什么我看不到进程的名称。还有其他方法可以确保 mongo 正常运行吗27017
?
答案1
lsof -i | grep mongo
这将列出lsof
正在监听“Internet 地址”( ) 的所有打开的文件 ( -i
)。此命令的输出通过管道传输到grep
,用于按文本进行过滤。在本例中,我们正在寻找与 Internet 相关且与单词匹配的所有打开的文件蒙戈。
答案2
实际上你可以使用:
lsof -i -ac mongod
lsof 可以做的不仅仅是查找网络连接。“-a”代表“And”,因此它必须符合两个条件。否则默认为“Or”。“-c”代表命令。您还可以指定用户名或 PID 或许多其他内容。
答案3
你可以使用flagnmap
来扫描 1 到 65535 范围内的端口-p-
例如,
Downloads:$ nmap -p- localhost
Starting Nmap 6.40 ( http://nmap.org ) at 2015-11-10 12:07 MST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00036s latency).
Not shown: 65529 closed ports
PORT STATE SERVICE
21/tcp open ftp
22/tcp open ssh
25/tcp open smtp
631/tcp open ipp
37818/tcp open unknown
46400/tcp open unknown
答案4
您可以使用系统 shell 中的命令lsof
或netstat -an
命令查看进程在开放端口方面所做的操作。或者,您也可以运行db.getCmdLineOpts()
命令mongo
。该输出将为您提供通过命令行 (argv) 传递给服务器的所有参数以及来自配置文件 (已解析) 的参数,您可以mongod
根据该信息推断端口正在监听。以下是示例:
{
"argv" : [
"/usr/bin/mongod",
"--config",
"/etc/mongod.conf",
"--fork"
],
"parsed" : {
"bind_ip" : "127.0.0.1",
"config" : "/etc/mongodb/mongodb.conf",
"dbpath" : "/srv/mongodb",
"fork" : true,
"logappend" : "true",
"logpath" : "/var/log/mongodb/mongod.log",
"quiet" : "true",
"port" : 30001
},
"ok" : 1
}
如果你没有传递上述特定端口选项,那么将mongod
监听 27017(正常)和 28017(http状态接口) 默认情况下。
笔记:还有一些其他参数可以在不明确的情况下改变端口,请参见此处:
https://docs.mongodb.org/manual/reference/configuration-options/#sharding.clusterRole
我提到这一点是因为您的lsof
输出还显示端口 27018 已打开,如果您设置了shardsvr
选项,则这是默认设置。因此,您的输出表明您可能mongos
在 27017 上有一个,mongod
在 27018 上有一个 (shard)。如果您连接到每个并运行,getCmdLineOpts()
您应该能够弄清楚配置情况。