मोंगोडब चल रहा है?


117

मैंने अपने यूनिक्स सर्वर पर mongodb और php ड्राइवरों को स्थापित किया है।

मेरा सवाल यह है कि मैं कैसे बताऊं कि मंगोडब चल रहा है? क्या स्टेटस चेक करने के लिए एक साधारण कमांड लाइन क्वेरी है? अगर मैं इसे शेल से एक बार शुरू करता हूं, तो यह चालू रहेगा यदि मैं शेल से बाहर निकलता हूं (ऐसा नहीं लगता है)। मैं सर्वर रिबूट पर मोंगोडब कनेक्शन को कैसे लगातार और ऑटो बना सकता हूं?

मैं दौड़ सकता हूं:

-बैश-3.2 $ su
पासवर्ड:
[रूट @ xxx] # सीडी / var / lib
[रूट @ xxx] # / mongodb-linux-i686-1.6.5/bin/mongod/mongodb-linux-
i686-1.6। 5 / बिन / मंगोल - मदद और स्टार्टअप के विकल्प के लिए विकल्प
बुध 23 फरवरी 08:06:54 MongoDB शुरू: पीआईडी ​​= 7271 बंदरगाह = 27017 dbpath = / डेटा / डीबी / 32-बिट

** नोट: जब MongoDB 32 बिट का उपयोग करते हैं, तो आप डेटा के लगभग 2 गीगाबाइट तक सीमित होते हैं
** http://blog.mongodb.org/post/137788967/32-bit-limitations देखें

** चेतावनी: आप OpenVZ में चल रहे हैं। यह तोड़ा जाना है !!!

बुध फ़रवरी 23 08:06:54 db संस्करण v1.6.5, pdfile संस्करण 4.5
बुध 23 फरवरी 08:06:54 git संस्करण: 0eb017e9b2828155a67c5612183737898912122929
बुध फ़रवरी फरवरी 08:06:54 sys जानकारी: लिनक्स डोम -12-31-39-01 -70-B4 2.6.21.7-2.fc8xen # 1 एसएमपी शुक्र
15 फरवरी 12:39:36 ईएसटी 2008 i686 BOOST_LIB_VERSION = 1_37
बुध 23 फरवरी 08:06:54 [initandlisten] पोर्ट 27017
बुध पर 23 फरवरी को कनेक्शन के लिए इंतजार कर रहा है। 06:54 [websvr] वेब एडमिन इंटरफ़ेस 28017 पोर्ट पर सुन रहा है

यदि मैं एक अलग खोल खोलता हूं तो मैं फिर से मोंगोडब से जुड़ सकता हूं:

-Bash-3.2 $ cd / var / lib
-bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
MongoDB शेल संस्करण: 1.6.5
कनेक्टिंग टू: टेस्ट
db.foooo.net ()
{" _id ": ObjectId (" 4d63d7d3eb95985ab19c8feb ")," a ": 1}

हालाँकि, यदि मैं प्रारंभिक शेल को बंद करता हूं तो मैं कनेक्ट नहीं कर सकता:

-bash-3.2 $ cd / var / lib
-bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
MongoDB शेल संस्करण: 1.6.5
कनेक्टिंग: टेस्ट
बुध 23 फरवरी 08:25:10 त्रुटि : सर्वर से कनेक्ट नहीं हो सका 127.0.0.1 (anon): 1154
अपवाद: कनेक्ट विफल

जवाबों:


144

दोनों के साथ जांचें:

   ps -edaf | grep mongo | grep -v grep  # "ps" flags may differ on your OS

या

   /etc/init.d/mongodb status     # for MongoDB version < 2.6

   /etc/init.d/mongod status      # for MongoDB version >= 2.6

या

   service mongod status

यह देखने के लिए कि क्या मूंगोद चल रहा है (आपको ऐसा करने के लिए मूल होने की जरूरत है, या सब कुछ के साथ उपसर्ग करें sudo)। कृपया ध्यान दें कि 'grep' कमांड हमेशा एक अलग प्रक्रिया के रूप में भी दिखाई देगा।

यदि कोई समस्या बताई गई है, तो यह देखने के लिए लॉग फ़ाइल /var/log/mongo/mongo.log देखें


20
होना चाहिए: सेवा मंगोल स्थिति
म्हदसिरवान

12
आप भी कर सकते हैं pgrep mongo
SLM

1
मुझे यह मिला: 501 5365 418 0 4:10 pm ttys000 0: 00.00 grep मोंगो, क्या इसका मतलब यह चल रहा है?
L1ghtk3ira

1
सेवा मेंग की स्थिति मेरे लिए काम नहीं की है, लेकिन सेवा मंगोल की स्थिति में काम किया है।
विक्स

5
मोंगो 2.6 से यह सेवा पहले से मोंगोडब है, भ्रामक हाँ
tsukimi

40

मुझे लगता है:

ps -ax | grep mongo

बहुत अधिक सुसंगत होना। लौटाए गए मूल्य का उपयोग यह पता लगाने के लिए किया जा सकता है कि वहां कितने मूंगोड चल रहे हैं


6
इसके अलावा, आप अपने द्वारा चलाए जा रहे grep प्रक्रिया को वापस नहीं करने के लिए एक फ़िल्टर जोड़ने पर विचार कर सकते हैं। इसलिए: ps -ax | grep -v grep | grep
mongo

34

जल्दी से जाँच करने के लिए कि क्या मेंगोडब चल रहा है, यह त्वरित एनसी ट्रिक आपको बता देगा।

nc -zvv localhost 27017

उपरोक्त आदेश मानता है कि आप इसे लोकलहोस्ट पर डिफ़ॉल्ट पोर्ट पर चला रहे हैं।

इसे स्वतः शुरू करने के लिए, आप इस धागे को देखना चाहते हैं ।


1
हां, यह काम करता है अगर सिर्फ चेक कर रहा है कि क्या कुछ पोर्ट को सुन रहा है। अगर ऐसा है, तो आउटपुट शामिल होगा 27017 open, या फिर Connection refused
अलेक्जेंडर


9

मोंगोडब उपयोग की वर्तमान चालू स्थिति की जांच करने के लिए: sudo service mongodb status


8

सही, खोल बंद करने से MongoDB बंद हो जाएगा। --forkमोंगॉड प्रक्रिया के लिए कमांड लाइन आर्ग का उपयोग करने की कोशिश करें जो इसे डेमॉन के बजाय चलाता है। मैं कोई यूनिक्स गुरु नहीं हूं, लेकिन मुझे यकीन है कि मशीन शुरू होने के बाद ऑटो स्टार्ट करने का एक तरीका होना चाहिए।

जैसे

mongod --fork --logpath /var/log/mongodb.log --logappend

शुरू और रोक मोंगो पर पूर्ण प्रलेखन की जाँच करें ।


धन्यवाद। मुझे यह मिला: [root@xxx lib]# ./mongodb-linux-i686-1.6.5/bin/mongod --fork --logpath /var/log/m ongodb.log --logappend all output going to: /var/log/mongodb.log forked process: 7518लेकिन फिर भी जब मैं खोल को बंद करता हूं और एक नया खोलता हूं तो मुझे मिलता हैConnect failed

हम्म, मेरे लिए काम करता है (Ubuntu 64bit VM, Mongo v1.7.6), इसलिए मुझे यकीन नहीं है कि यह आपके लिए tbh क्यों नहीं है। : यदि आप यह नहीं काम कर सकते हैं, सबसे अच्छा शर्त MongoDB मंचों पर पोस्ट करना हो सकता है groups.google.com/group/mongodb-user
AdaTheDev

लेकिन मैंने इसे शुरू कर दिया है &, और अब मैं इस प्रक्रिया को नहीं पा सकता हूं।
बोब्बोबो

@bobobobo - कैसे आप प्रक्रिया आईडी खोजने की कोशिश कर रहे हैं?
तस्स

ps -e | grep mongod
बॉबोबो

3

MongoDB स्थिति की जाँच करने के लिए आप नीचे दिए गए कमांड का उपयोग कर सकते हैं, जैसे: sudo service MongoDB statusजो स्क्रीनशॉट की तरह MongoDB सेवा की स्थिति प्रदर्शित करता है:

MongoDB स्थिति


2

शायद इसलिए कि मैंने अपने देव सर्वर को ठीक से या इसी तरह से बंद नहीं किया। इसे ठीक करने के लिए, ताला निकालें और सर्वर को इसके साथ शुरू करें: sudo rm /var/lib/mongodb/mongod.lock ; sudo start mongodb


1

मुझे पता है कि यह php के लिए है, लेकिन मैं यहाँ नोड के लिए समाधान ढूंढ रहा हूं। मैंगोस्किन का उपयोग करना:

mongodb.admin().ping(function(err) {
    if(err === null)
        // true - you got a conntion, congratulations
    else if(err.message.indexOf('failed to connect') !== -1)
        // false - database isn't around
    else
        // actual error, do something about it
})

अन्य ड्राइवरों के साथ, आप एक कनेक्शन बनाने का प्रयास कर सकते हैं और यदि यह विफल रहता है, तो आपको मानगो सर्वर के डाउन होने का पता है। Mongoskin को वास्तव में कुछ कॉल करने की आवश्यकता है (जैसे पिंग) क्योंकि यह आलसी को जोड़ता है। Php के लिए, आप कोशिश-से-कनेक्ट विधि का उपयोग कर सकते हैं। एक स्क्रिप्ट बनाओ!

पीएचपी:

$dbIsRunning = true
try {
  $m = new MongoClient('localhost:27017');
} catch($e) {
  $dbIsRunning = false
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.