如何找出 mongo 位于哪个端口?

如何找出 mongo 位于哪个端口?

我知道默认的 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 中的命令lsofnetstat -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()您应该能够弄清楚配置情况。

相关内容