মোঙ্গো শেল থেকে মঙ্গো কী বন্দরে শুনছে তা আমি কীভাবে দেখতে পারি?


102

যদি আমার একটি মঙ্গো উদাহরণ চলমান থাকে তবে আমি কীভাবে শেল থেকে পোর্ট নম্বর শুনছি তা যাচাই করতে পারি? আমি ভেবেছিলাম যে db.serverStatus()এটি করবে কিন্তু আমি এটি দেখতে পাচ্ছি না। আমি এটা দেখি

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

যা কাছে ... তবে নেই পরামর্শ? আমি ডকগুলি পড়েছি এবং এমন কোনও আদেশের সন্ধান করতে পারে না যা এটি করবে।


আপনার কি মঙ্গো শেল দরকার? নাকি নিয়মিত ইউনিক্স শেল করবে? :)
সেরজিও টুলেন্টসেভ

@ সার্জিওটুলেন্টেভ আমি বিশেষভাবে ভাবছি যে এটি মঙ্গো শেলের ভিতরেই সম্ভব কিনা - যেহেতু আমি ইতিমধ্যে নিকটবর্তী তথ্য পেয়েছি।
jcollum

উত্তর:


73

সিস্টেম শেল থেকে আপনি lsof(নীচে ডেরিকের উত্তর দেখুন) ব্যবহার করতে পারেন বা netstat -anকোনও প্রক্রিয়া আসলে কী করছে তা দেখতে। তবে, ধরে নিলাম আপনার কাছে কেবল mongoশেলের অ্যাক্সেস রয়েছে (যা আপনার প্রশ্নের শিরোনামটি বোঝায়) তবে আপনি serverCmdLineOpts()কমান্ডটি চালাতে পারবেন । এই আউটপুট আপনাকে কমান্ড লাইন (আরজিভি) এবং কনফিগার ফাইল (পার্সড) থেকে প্রাপ্ত সমস্ত আর্গুমেন্ট দেবে এবং আপনি 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
}

যদি আপনি উপরের মতো নির্দিষ্ট পোর্ট বিকল্পগুলি পাস না করে থাকেন তবে ডিফল্টরূপে mongod27017 এবং 28017 ( HTTP কনসোল ) এ শুনবেন । দ্রষ্টব্য: আরও কয়েকটি যুক্তি রয়েছে যা সুস্পষ্ট না হয়ে পোর্টগুলিকে পরিবর্তন করতে পারে, এখানে দেখুন:

https://docs.mongodb.org/manual/references/configration-options/#sharding.clusterRole


4
আমার ফলাফল: { "argv" : [ "mongod" ], "parsed" : { }, "ok" : 1 }এটি আমাকে বেশি কিছু বলে না। আমার ধারণা এটি আমাকে বলছে আমি ডিফল্ট বন্দরে আছি।
jcollum

5
ডান - যদি এটি নির্দিষ্ট না করা হয় (এবং আপনার ক্ষেত্রে এটির মতো মনে হয়) তবে সমস্ত কিছু ডিফল্ট, যা আপনাকে 27017 এ রাখে
অ্যাডাম কমারফোর্ড

221

আপনি চালনা করে অপারেটিং সিস্টেম শেল থেকে এটি করতে পারেন:

sudo lsof -iTCP -sTCP:LISTEN | grep mongo

4
@ স্মার্টটিউটি আমি স্পষ্টভাবে মঙ্গো শেল ব্যবহার করে একটি কমান্ড চেয়েছি; lsof কাজ করে না
jcollum

36

এটা চেষ্টা কর:

db.runCommand({whatsmyuri : 1})

এটি আইপি ঠিকানা এবং পোর্ট নম্বর উভয়ই প্রদর্শন করবে।


এটা কি নতুন? এটি মঙ্গোর কোন সংস্করণে প্রদর্শিত হয়েছিল?
jcollum

4
@ jcollum সংস্করণ 3.0 এ নতুন বৈশিষ্ট্য রয়েছে।
গণু

6
এটি শেলের পোর্ট বা অন্য কিছু দেখায় ... আউটপুট lsof:> মংডোড 14942 দিমিত্রি 5u আইপিভি 4 0xc36ad5231f84011d 0t0 টিসিপি *: 27017 (তালিকা) এবং whatsmyurlআদেশ থেকে : {"আপনি": "127.0.0.1:50294", "ঠিক আছে": 1 } এবং তারা মেলে না।
dmi3y

11

মঙ্গোডিবি কেবলমাত্র একটি বন্দরে ডিফল্টরূপে শুনবে (27017)। যদি--rest ইন্টারফেসটি সক্রিয় থাকে তবে পোর্ট 28017 (27017 + 1000) এছাড়াও বিশদ বিবরণের জন্য উন্মুক্ত হ্যান্ডলিং ওয়েব অনুরোধগুলি হবে requests

মঙ্গোডিবি একটি getParameterকমান্ড সমর্থন করে , তবে এটি কেবলমাত্র তখনই কাজ করে যদি আপনি ইতিমধ্যে ডেটাবেস-এর সাথে সংযুক্ত থাকেন (যে মুহুর্তে আপনি ইতিমধ্যে পোর্টটি জানেন)।


4
হুম, সুতরাং আমরা বলতে পারি যে আমি যদি সংযুক্ত থাকি এবং বন্দরটি না জানি তবে এটি অবশ্যই 27017 হওয়া উচিত If পোর্টটি যদি 27017 না হয় তবে আমাকে সংযোগ করার জন্য অবশ্যই পোর্টটি অবশ্যই জানতে হবে। ঠিক আছে?
jcollum

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.