mongoシェルからmongoがリッスンしているポートを確認するにはどうすればよいですか?


99

mongoインスタンスを実行している場合、シェルからリッスンしているポート番号を確認するにはどうすればよいですか?私は考えてdb.serverStatus()それを行うだろうが、私はそれを見ることはありません。私はこれを見る

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

どちらが近いですか...違います。提案?私はドキュメントを読みましたが、これを行うコマンドを見つけることができません。


モンゴシェルが必要ですか?または、通常のUNIXシェルで十分ですか?:)
Sergio Tulentsev、2012

@SergioTulentsevこれはmongoシェルの内部で可能かどうかを具体的に疑問に思っています-私はすでに近い情報を見つけたからです。
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 console)で待機します。注:明示的にせずにポートを変更できる他の引数がいくつかあります。ここを参照してください:

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


4
私の結果は次のとおり{ "argv" : [ "mongod" ], "parsed" : { }, "ok" : 1 }です。私はデフォルトのポートにいると言っているのだと思います。
jcollum '20

5
右-それがまったく指定されていない場合(そしてあなたの場合はそのように思われる場合)、すべてがデフォルトであり、27017に設定されます
Adam Comerford

220

これは、オペレーティングシステムシェルから次のコマンドを実行して実行できます。

sudo lsof -iTCP -sTCP:LISTEN | grep mongo

4
@SmartyTwiti mongoシェルを使用してコマンドを明示的に要求しました。lsofが機能しない
jcollum

35

これを試して:

db.runCommand({whatsmyuri : 1})

IPアドレスとポート番号の両方が表示されます。


それは新しいですか?どのバージョンのmongoが表示されましたか?
jcollum

1
@jcollumバージョン3.0にはこの新機能があります。
Ganu 2015

6
これはシェルのポートか何かを示しているようです...出力lsof:> mongod 14942 dmitrii 5u IPv4 0xc36ad5231f84011d 0t0 TCP *:27017(LISTEN)And from whatsmyurlcommand:{"you": "127.0.0.1:50294"、 "ok":1 }そして、それらは一致しません。
dmi3y 2016

12

MongoDBはデフォルトで1つのポートのみをリッスンします(27017)。--restインターフェースがアクティブな場合、ポート28017(27017 + 1000)も開いて詳細のWebリクエストを処理します。

MongoDBはgetParameterコマンドをサポートしていますが、これは、すでにデータベースに接続している場合にのみ機能します(その時点ですでにポートがわかっています)。


2
うーん、接続していてポートがわからない場合は27017である必要があります。ポートが27017でない場合は、接続するためにポートを知っている必要があります。いいでしょう?
jcollum

2

次のコマンドを試してください、これは私にとってはうまくいきます:

sudo lsof -iTCP -sTCP:LISTEN | grep mongo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.