mongo가 mongo shell에서 수신하는 포트를 어떻게 알 수 있습니까?


99

mongo 인스턴스가 실행중인 경우 쉘에서 수신 대기중인 포트 번호를 어떻게 확인할 수 있습니까? 그렇게 db.serverStatus()할 거라고 생각 했지만 보이지 않습니다. 나는 이것을 본다

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

가깝지만 ... 제안? 문서를 읽었으며이를 수행 할 명령을 찾을 수없는 것 같습니다.


몽고 쉘이 필요합니까? 아니면 일반 유닉스 쉘이할까요? :)
Sergio Tulentsev 2012

@SergioTulentsev 나는 이미 가까운 정보를 찾았 기 때문에 mongo shell 내부에서 이것이 가능한지 궁금합니다.
jcollum

답변:


72

시스템 셸에서 사용하거나 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 콘솔 ) 에서 수신 대기합니다 . 참고 : 명시 적이 지 않고 포트를 변경할 수있는 몇 가지 다른 인수가 있습니다. 여기를 참조하십시오.

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


4
내 결과는 다음과 같습니다 { "argv" : [ "mongod" ], "parsed" : { }, "ok" : 1 }. 내가 기본 포트에 있다고 말하는 것 같아요.
jcollum

5
맞습니다-전혀 지정되지 않은 경우 (그리고 귀하의 경우에는 그렇게 보이는 경우) 모든 것이 기본값이며, 이는 27017
Adam Comerford

220

다음을 실행하여 운영 체제 쉘에서이를 수행 할 수 있습니다.

sudo lsof -iTCP -sTCP:LISTEN | grep mongo

4
@SmartyTwiti mongo 셸을 사용하여 명령을 명시 적으로 요청했습니다. lsof가 작동하지 않습니다
jcollum

35

이 시도:

db.runCommand({whatsmyuri : 1})

IP 주소와 포트 번호가 모두 표시됩니다.


새로운가요? 어떤 버전의 몽고가 나타 났습니까?
jcollum

1
@jcollum 버전 3.0에는이 새로운 기능이 있습니다.
Ganu

6
이것은 쉘의 포트 또는 무언가를 보여줍니다 ... Output from lsof:> mongod 14942 dmitrii 5u IPv4 0xc36ad5231f84011d 0t0 TCP * : 27017 (LISTEN) 그리고 whatsmyurl명령에서 : { "you": "127.0.0.1:50294", "ok": 1 } 그리고 그들은 일치하지 않습니다.
dmi3y

12

MongoDB는 기본적으로 하나의 포트 (27017)에서만 수신합니다. 는 IF --rest인터페이스가 활성화되어, 포트 28017 (+ 1,000 27,017)도 자세한 내용은 공개 처리 웹 요청 될 것입니다.

MongoDB는 getParameter명령을 지원 하지만 이미 데이터베이스에 연결되어있는 경우에만 작동합니다 (이미 포트를 알고있는 지점).


2
흠, 제가 연결되어 있는데 포트를 모른다면 27017이어야한다고 말할 수 있습니다. 포트가 27017이 아니면 연결하려면 포트를 알아야합니다. 맞습니까?
jcollum

2

다음 명령을 시도하십시오.이 명령은 저에게 효과적입니다.

sudo lsof -iTCP -sTCP:LISTEN | grep mongo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.