2011-12-13 9 views
56

मैं mongo 1.8.2 चला रहा हूं और मैक पर इसे बंद करने के तरीके को देखने का प्रयास कर रहा हूं।मैक ओएस एक्स पर मोंगोड रोकने के लिए एक साफ तरीका क्या है?

हमारे ubuntu सर्वर मैं कर सकता हूँ के साथ मोंगो खोल से बंद मोंगो सफाई से पर

:

> use admin 
> db.shutdownServer() 

लेकिन मेरी मैक पर, यह mongod प्रक्रिया को मारने नहीं है। आउटपुट दिखाता है कि इसे 'बंद होना चाहिए' लेकिन जब मैं ps -ef | grep mongo यह मुझे एक सक्रिय प्रक्रिया दिखाता है। भी, मैं अभी भी एक मोंगो खोल खोल सकता हूं और अपने डीबीएस से पूछता हूं जैसे कि इसे कभी बंद नहीं किया गया था।

मेरी db.shutdownServer से निर्गम() स्थानीय स्तर पर है:

MongoDB shell version: 1.8.2 
connecting to: test 
> use admin     
switched to db admin 
> db.shutdownServer() 
Tue Dec 13 11:44:21 DBClientCursor::init call() failed 
Tue Dec 13 11:44:21 query failed : admin.$cmd { shutdown: 1.0 } to: 127.0.0.1 
server should be down... 
Tue Dec 13 11:44:21 trying reconnect to 127.0.0.1 
Tue Dec 13 11:44:21 reconnect 127.0.0.1 failed couldn't connect to server 127.0.0.1 
Tue Dec 13 11:44:21 Error: error doing query: unknown shell/collection.js:150 

मैं मैं सिर्फ प्रक्रिया को मार सकता है, लेकिन मैं इसे और अधिक सफाई से करना चाहते हैं पता है।

+0

आपने 'मोंगोड' कैसे शुरू किया है? बस खोल पर? 'Launchctl' का उपयोग करना? – dcrosta

+0

क्या आपके पास लॉग से कोई जानकारी है? ऐसा हो सकता है कि मोंगोडीबी "ऑटो-रीस्टार्टिंग" है। आप '--logappend' के साथ चलना चाह सकते हैं, हालांकि एक ब्रांड नई लॉग फ़ाइल एक स्पष्ट संकेत है कि प्रक्रिया पुनरारंभ हो गई है। –

उत्तर

121

होगा यह शायद इसलिए है क्योंकि launchctl अपने mongod उदाहरण के प्रबंध कर रहा है। आप शुरू करना चाहते और शट डाउन उदाहरण mongod हैं, तो उतारना पहला यह है कि:

launchctl unload -w ~/Library/LaunchAgents/org.mongodb.mongod.plist 

फिर mongod मैन्युअल रूप से प्रारंभ:

mongod -f path/to/mongod.conf --fork 

आप ~/Library/LaunchAgents/org.mongodb.mongod.plist से अपने mongod.conf स्थान पा सकते हैं।

उसके बाद, db.shutdownServer() ठीक काम करेगा।

जोड़ा गया Feb 22 2014:

आप homebrew के माध्यम से स्थापित MongoDB किया है, तो homebrew वास्तव में एक आसान brew services आदेश है। वर्तमान चल सेवाओं दिखाने के लिए:

brew services list

MongoDB शुरू करने के लिए:

brew services start mongodb

MongoDB रोकने के लिए अगर यह पहले से ही चल रहा है:

brew services stop mongodb

अद्यतन

जैसा कि एडफिन ने टिप्पणी में बताया, brew services अब उपयोगकर्ता परिभाषित कमांड के रूप में उपलब्ध है और निम्न आदेश के साथ स्थापित किया जा सकता है: brew tap gapple/services

+0

वह था। धन्यवाद! – emilebaizel

+21

यदि कोई दिलचस्पी लेता है, तो वर्तमान में, यदि आपके पास होमब्री के माध्यम से स्थापित मोंगोडब है तो आपको वास्तव में 'लॉन्चक्टल स्टॉप homebrew.mxcl.mongodb' को mongodb को रोकने के लिए करना होगा। –

+3

सितंबर 2014 के रूप में, 'ब्रू सेवाओं' के संबंध में 'ब्रू' में एक बहिष्करण नोटिस है: '$ ब्रू सेवा चेतावनी: ब्रू सेवाएं असमर्थित हैं और जल्द ही हटा दी जाएंगी। –

3

इन डॉक्स देखें:

http://www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo#StartingandStoppingMongo-SendingaUnixINTorTERMsignal

आप एक टर्मिनल में इसे शुरू किया, तो आप एक ctrl + 'c' साथ ठीक होना चाहिए - यह एक साफ बंद करेंगे।

हालांकि, यदि आप लॉन्चक्टल का उपयोग कर रहे हैं तो इसके लिए विशिष्ट निर्देश हैं जो इसे स्थापित करने के तरीके के आधार पर अलग-अलग होंगे।

आप Homebrew उपयोग कर रहे हैं यह launchctl stop homebrew.mxcl.mongodb

4

मैं port कमांड का उपयोग करके मोंगोडीबी सर्वर को रोकना पसंद करता हूं।

sudo port unload mongodb 

और इसे फिर से शुरू करने के लिए।

sudo port load mongodb 
+2

केवल तभी काम करता है जब आपके पास मैकपोर्ट स्थापित हों। –

21

यदि आप homebrew साथ MongoDB स्थापित, वहाँ एक आसान तरीका है: मेरे लिए

launchctl stop <job label> 

(:

launchctl list | grep mongo 

बंद करो मोंगो काम: launchctl साथ

सूची मोंगो काम यह launchctl stop homebrew.mxcl.mongodb है)

प्रारंभ मोंगो काम:

launchctl start <job label> 
+0

यह मेरे लिए काम करता है। – realhu

2

यह एक पुरानी सवाल है, लेकिन इसके एक मैं जबकि साथ ही खोज कर पाया।

आप brew के साथ स्थापित किया है, तो समाधान वास्तव में इस होगा:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist

11

सरल तरीका MongoDB की प्रक्रिया आईडी हो और यह को मारने के लिए है। कृपया ध्यान दें कि इसके लिए kill -9 pid का उपयोग न करें क्योंकि यह डेटाबेस को नुकसान पहुंचा सकता है।

हां, तो 1. MongoDB की पीआईडी ​​मिल

$ pgrep मोंगो

आप मोंगो की पीआईडी, अब

$ मारने

तुम्हें मार का उपयोग कर सकते -15 के रूप में मिल जाएगा अच्छी तरह से