Как я могу увидеть, какие порты mongo прослушивают из оболочки mongo?

Если у меня есть экземпляр mongo, как я могу проверить, какие номера портов он прослушивает из оболочки? Я думал, что db.serverStatus() сделает это, но я этого не вижу. Я вижу это

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

Что близко... но нет. Предложения? Я прочитал документы и не могу найти какую-либо команду, которая сделает это.

Ответ 1

В системной оболочке вы можете использовать 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 console) по умолчанию. Примечание. Есть несколько других аргументов, которые могут изменять порты, не будучи явным, см. Здесь:

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

Ответ 2

Вы можете сделать это из оболочки операционной системы, выполнив:

sudo lsof -iTCP -sTCP:LISTEN | grep mongo

Ответ 3

Попробуйте следующее:

db.runCommand({whatsmyuri : 1})

Он отобразит как IP-адрес, так и номер порта.

Ответ 4

MongoDB только слушает по одному порту по умолчанию (27017). Если активен интерфейс --rest, порт 28017 (27017 + 1000) также будет открывать веб-запросы для обработки деталей.

MongoDB поддерживает команду getParameter, но это работает, только если вы уже подключены к базе данных (в этот момент вы уже знаете порт).