Как узнать, на котором монго порта?

Я знаю, что порт монго по умолчанию 27017 и я могу соединиться с этим экземпляром на таком порте.

Но я пытался понять это другими средствами.

Я нашел это mongo работает ps aux | grep mongo с ним я вижу /usr/bin/mongod --config /etc/mongod.conf

В /etc/mongod.conf порт 27018

Netstat netstat -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      -

Я не знаю, почему я не вижу название процесса. Есть ли любой другой способ быть уверенным, что монго продолжает работать 27017?

4
задан 10 November 2015 в 12:02

4 ответа

lsof -i | grep mongo

Это перечислит все открытые файлы (lsof), которые слушают на «интернет-адресах» (-i). Продукция этого перекачана по трубопроводу к grep, который используется, чтобы отфильтровать текстом. В этом случае мы ищем все файлы, открытые, связанные с Интернетом, тот матч монго Word .

8
ответ дан 23 November 2019 в 11:40

Вы могли использовать nmap, чтобы просмотреть порты в диапазоне от 1 до 65 535 с -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
3
ответ дан 23 November 2019 в 11:40

От системной оболочки можно использовать 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, будет слушать на 27 017 (нормальный) и 28017 ( http интерфейс состояния ) по умолчанию.

Примечание: существует несколько других аргументов, которые могут изменить порты, не будучи явными, видеть здесь:

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

я упоминаю это, потому что Ваш lsof вывод также показывает порту 27 018 открытых, который является значением по умолчанию, если Вы имеете shardsvr набор опции. Следовательно, Ваш вывод предполагает, что Вы можете иметь mongos на 27 017 и (черепок) mongod на 27 018. Если Вы соединяетесь с каждым и работаете getCmdLineOpts(), необходимо быть в состоянии выяснить, как настроены вещи.

1
ответ дан 23 November 2019 в 11:40

На самом деле можно использовать:

lsof -i -ac mongod

lsof может сделать, больше, чем просто ищут сетевые соединения. "-a" для "И" таким образом, он должен будет соответствовать обоим критериям. Иначе это принимает значение по умолчанию к "Или". "-c" для команды. Можно также указать имя пользователя или PID или много другого материала.

1
ответ дан 23 November 2019 в 11:40

Другие вопросы по тегам:

Похожие вопросы: