Mac OS X'te mongod'u durdurmanın temiz bir yolu nedir?


88

mongo 1.8.2 çalıştırıyorum ve Mac'te temiz bir şekilde nasıl kapatacağımı görmeye çalışıyorum.

ubuntu sunucularımızda mongo'yu mongo kabuğundan temiz bir şekilde kapatabilirim:

> use admin
> db.shutdownServer()

ama Mac'imde, mongod sürecini öldürmez. çıktı 'kapanması gerektiğini' gösteriyor ancak i ps -ef | grep mongo bana aktif bir süreç gösteriyor. Ayrıca, hala bir mongo kabuğunu açabilir ve dbs'imi hiç kapatılmamış gibi sorgulayabilirim.

db.shutdownServer () sistemimin yerel olarak çıktısı:

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

Süreci öldürebileceğimi biliyorum ama daha temiz bir şekilde yapmak istiyorum


Nasıl başladı mongod? Sadece kabukta mı? Kullanıyor launchctlmusunuz?
dcrosta

Günlüklerden herhangi bir bilginiz var mı? MongoDB "otomatik yeniden başlatılıyor" olabilir. --logappendYepyeni bir günlük dosyası, işlemin yeniden başlatıldığının açık bir göstergesi olsa da , çalıştırmak isteyebilirsiniz .
Gates Başkan Yardımcısı

Yanıtlar:


175

Bunun nedeni muhtemelen launchctl'nin mongod örneğinizi yönetmesidir. Mongod örneğini başlatmak ve kapatmak istiyorsanız, önce şunu kaldırın:

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

Ardından mongod'u manuel olarak başlatın:

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

Mongod.conf konumunuzu ~/Library/LaunchAgents/org.mongodb.mongod.plist.

Ondan sonra db.shutdownServer()gayet iyi çalışırdı.

22 Şubat 2014 Eklendi:

Homebrew aracılığıyla mongodb yüklediyseniz, homebrew aslında kullanışlı bir brew serviceskomuta sahiptir. Mevcut çalışan hizmetleri göstermek için:

brew services list

Mongodb'u başlatmak için:

brew services stop mongodb-community

Zaten çalışıyorsa, mongodb'u durdurmak için:

brew services stop mongodb-community

Güncelleme

Edufinn yorumunda belirttiği gibi, brew serviceskullanıcı tanımlı komutu olarak kullanıma sunulmuştur ve aşağıdaki komutu ile kurulabilir: brew tap gapple/services.


23
Herhangi birinin ilgilenmesi durumunda, şu anda, homebrew aracılığıyla mongodb kurduysanız, aslında launchctl stop homebrew.mxcl.mongodbmongodb'u durdurmak için yapmanız gerekir .
Tyler Brock

3
Eylül 2014'te, şunlarla brewilgili bir kullanımdan kaldırma bildirimi var brew services:$ brew services Warning: brew services is unsupported and will be removed soon.
Pablo Navarro

3
Aralık 2014 itibariyle brew serviceskaldırılmıştır. $ brew services Error: Unknown command: services
hughes

6
brew servicesKullanıcı tanımlı komutu olarak kullanıma sunulmuştur ve aşağıdaki komutu ile kurulabilir: brew tap gapple/services.
edufinn

1
Mongodb hizmetini başlattıktan sonra, düğüm sunucum ona bağlanamıyor. Ancak mongodb'u komut satırından başlatırsam iyi çalışıyor. Sanırım bağlantı noktası sorunu olmalı .. Hizmet başlatılırken bağlantı noktası nasıl ayarlanır?
pravin

35

Homebrew ile mongodb kurduysanız, daha kolay bir yol var:

Mongo işini launchctl ile listeleyin:

launchctl list | grep mongo

Mongo işini durdurun:

launchctl stop <job label>

(Benim için bu launchctl stop homebrew.mxcl.mongodb)

Mongo işine başlayın:

launchctl start <job label>

24

Basit yol, mongodb'un işlem kimliğini alıp öldürmektir. Veritabanına zarar verebileceğinden, bunun için kill -9 pid KULLANMAYIN.

yani, 1. mongodb pid'ini alın

$ pgrep mongo

mongo pid alacaksın, şimdi

$ kill

Kill -15'i de kullanabilirsiniz


8

Mongodb topluluk sunucusunu homebrew aracılığıyla kurduysanız, şunları yapabilirsiniz:

brew services list

Bu, mevcut hizmetleri aşağıdaki gibi listeleyecektir:

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

redis             stopped

Ardından mongodb'u önce durdurup yeniden başlatarak yeniden başlatabilirsiniz:

brew services stop mongodb
brew services start mongodb

4

portKomutun kendisini kullanarak MongoDB sunucusunu durdurmayı tercih ediyorum .

sudo port unload mongodb

Ve yeniden başlamak için.

sudo port load mongodb


1

Bu eski bir soru, ama arama sırasında da bulduğum bir soru.

İle yüklediyseniz brew, çözüm aslında şu olacaktır:

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


0

Servis demleme yoluyla çalışıyorsa, aşağıdaki komutu kullanarak onu durdurabilirsiniz:

brew services stop mongodb

0

Başkalarının sunduğu çözümler eskiden benim için çalışıyordu ama artık benim için çalışmıyor, aşağıdaki gibi.

brew services stop mongodb
brew services start mongodb

brew services list verir

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

Bu yüzden benim için işe yarayan mongodb-communityyerine kullandımmongodb

brew services stop mongodb-community
brew services start mongodb-community
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.