मैक ओएस एक्स पर मंगोल को रोकने के लिए एक साफ तरीका क्या है?


84

मैं मोंगो 1.8.2 चला रहा हूं और यह देखने की कोशिश कर रहा हूं कि मैक पर इसे कैसे बंद किया जाए।

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

> use admin
> db.shutdownServer()

लेकिन मेरे मैक पर, यह मंगोल प्रक्रिया को नहीं मारता है। आउटपुट से पता चलता है कि यह 'शटडाउन' होना चाहिए, लेकिन जब मैं 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

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


आपने कैसे शुरू किया है mongod? सिर्फ खोल पर? का उपयोग कर launchctl?
dcrosta

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

जवाबों:


171

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

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

फिर मैन्युअल रूप से मंगोल शुरू करें:

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

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

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

जोड़ा गया फ़रवरी 22 2014:

यदि आप होमबॉव के माध्यम से मोंगॉडब स्थापित करते हैं, तो होमब्रेव वास्तव में एक आसान brew servicesकमांड है। वर्तमान चालू सेवाओं को दिखाने के लिए:

brew services list

मंगोल शुरू करने के लिए:

brew services start mongodb

यदि यह पहले से ही चल रहा है तो मोंगोडब को रोकने के लिए:

brew services stop mongodb

अपडेट करें

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


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

3
2014 सितंबर के रूप में, के brewसंबंध में एक पदावनति नोटिस है brew services:$ brew services Warning: brew services is unsupported and will be removed soon.
पाब्लो नवारो

3
दिसंबर 2014 brew servicesतक हटा दिया गया। $ brew services Error: Unknown command: services
ह्यूजेस

6
brew servicesअब उपयोगकर्ता-परिभाषित कमांड के रूप में उपलब्ध है और निम्नलिखित कमांड के साथ स्थापित किया जा सकता है brew tap gapple/services:।
edufinn

1
मैं मोंगोडब सेवा शुरू करने के बाद, मेरा नोड सर्वर इससे जुड़ने में असमर्थ है। हालांकि अगर मैं कमांड लाइन से मोंगोडब शुरू करता हूं, तो यह ठीक काम करता है। मुझे लगता है कि यह पोर्ट इश्यू होना चाहिए .. सर्विस शुरू करते समय पोर्ट कैसे सेट करें?
प्रवीण

35

यदि आपने होमब्रे के साथ मोंगॉडब स्थापित किया है, तो एक आसान तरीका है:

लॉन्चर के साथ लिस्ट मेंगो जॉब:

launchctl list | grep mongo

आम की नौकरी बंद करो:

launchctl stop <job label>

(मेरे लिए यह है launchctl stop homebrew.mxcl.mongodb)

नौकरी शुरू करें:

launchctl start <job label>

24

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

इसलिए, 1. मोंगोडब की पिड प्राप्त करें

$ pgrep मोंगो

अब आपको पोंग ऑफ मेंगो मिलेगा

$ मार

आप मार -15 का भी इस्तेमाल कर सकते हैं


8

यदि आपने होमबॉव के माध्यम से मोंगॉडब सामुदायिक सर्वर स्थापित किया है, तो आप कर सकते हैं:

brew services list

यह नीचे दी गई वर्तमान सेवाओं को सूचीबद्ध करेगा:

Name              Status  User          Plist
mongodb-community started thehaystacker /Users/thehaystacker/Library/LaunchAgents/homebrew.mxcl.mongodb-community.plist

redis             stopped

तब आप पहले स्टॉप और पुनः आरंभ करके मोंगोडब को पुनः आरंभ कर सकते हैं:

brew services stop mongodb
brew services start mongodb

4

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

sudo port unload mongodb

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

sudo port load mongodb

3

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

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

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

हालाँकि, यदि आप लॉन्चर का उपयोग कर रहे हैं, तो उसके लिए कुछ विशिष्ट निर्देश हैं जो इस बात पर निर्भर करता है कि यह कैसे स्थापित किया गया है।

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


1

यह एक पुराना प्रश्न है, लेकिन इसकी खोज के दौरान मुझे इसका पता चला।

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

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


0

यदि सेवा काढ़ा चल रहा है, तो आप इसे निम्न आदेश का उपयोग करके रोक सकते हैं:

brew services stop mongodb

0

दूसरों द्वारा प्रदान किए गए समाधान मेरे लिए काम करते थे लेकिन अब मेरे लिए काम नहीं कर रहे हैं, जो नीचे है।

brew services stop mongodb
brew services start mongodb

brew services list देता है

Name              Status  User      Plist
mongodb-community started XXXXXXXXX /Users/XXXXXXXXX/Library/LaunchAgents/homebrew.mxcl.mongodb-community.plist

इसलिए मैंने इस्तेमाल किया जिसके mongodb-communityबजाय mongodbमेरे लिए काम किया

brew services stop mongodb-community
brew services start mongodb-community
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.