2011-12-13 24 views
56

1.8.2 mongo çalıştırıyorum ve Mac üzerinde nasıl kapatılacağını görmeye çalışıyorum. i ile Mongo kabuğundan temiz kapatma Mongo can bizim ubuntu sunucularındaMac OS X'te mongod'u durdurmanın temiz bir yolu nedir?

:

> use admin 
> db.shutdownServer() 

ama benim Mac üzerinde, bu mongod sürecini öldürmez. çıktı, 'kapatılmalı' ancak 'ps -ef | grep mongo bana aktif bir süreç gösterir. Ayrıca, hala bir mongo kabuğunu açabilirim ve dbs'imi asla kapanmadığı gibi sorgulayabilirim.

benim db.shutdownServer çıktısı() yerel olarak geçerli:

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 

i sadece süreci öldürebilir ama daha temiz yapmak istiyorum biliyoruz. Bu dokümanlar üzerinden

+0

Nasıl mongod' başlattınız? Sadece kabuğunda mı? 'Launchctl' kullanılıyor mu? – dcrosta

+0

Günlüklerden herhangi bir bilginiz var mı? MongoDB'nin "otomatik yeniden başlatılması" olabilir. Yepyeni bir günlük dosyası, işlemin yeniden başlatıldığının açık bir göstergesi olsa da '--logappend 'ile çalıştırmak isteyebilirsiniz. –

cevap

121

olurdu.

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

Sonra mongod elle başlatmak: başlatmak istediğiniz ve kapatma örneği mongod durumunda ilk o boşaltmak

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

Sen ~/Library/LaunchAgents/org.mongodb.mongod.plist adresinin mongod.conf yerini bulabilir.

Bundan sonra, db.shutdownServer() sadece iyi çalışır.

Eklendi 22 Şubat 2014:

Eğer homebrew üzerinden yüklenen mongodb varsa

, homebrew aslında kullanışlı brew services komutu vardır. Zaten çalışıyorsa eğer

brew services start mongodb

MongoDB durdurmak için: mevcut çalışan hizmetlerini göstermek için:

brew services list

MongoDB başlatmak için

brew services stop mongodb

Güncelleme

Edufinn yorumda belirtildiği gibi, brew services şimdi kullanıcı tanımlı komut olarak kullanılabilir ve aşağıdaki komutla yüklenebilir: brew tap gapple/services.

+0

bu kadardı. Teşekkürler! – emilebaizel

+21

Herhangi biri ilgilenirse, şu anda, eğer homebrew ile monte edilmiş mongodbiniz varsa, gerçekten mongodb'u durdurmak için 'stopctl stop homebrew.mxcl.mongodb' işlemini yapmanız gerekir. –

+3

Eylül 2014'te, demleme hizmetleri ile ilgili olarak demlemek için bir demeç bildirimi var: 'demleme hizmetleri Uyarı: demleme hizmetleri desteklenmiyor ve yakında kaldırılacak. ' –

3

Kontrol: Bir terminalde başlattı Eğer

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

Bir ctrl + 'c' ile ok olmalıdır - bu temiz kapatma yapacağız. Bununla birlikte, eğer launchctl kullanıyorsanız, nasıl kurulduğuna bağlı olarak değişiklik gösterecek özel talimatlar vardır. Eğer Homebrew kullanıyorsanız

o launchctl sizin mongod örneğini yönetiyor muhtemelen çünkü launchctl stop homebrew.mxcl.mongodb

4

MongoDB sunucusunu port komutunu kullanarak durdurmayı tercih ediyorum. Ve yeniden başlatmak için. Eğer homebrew ile MongoDB kurduysanız

sudo port load mongodb 
+2

Sadece yüklü macport'larınız varsa çalışır. –

21

, daha kolay bir yolu var:

launchctl list | grep mongo 

Durdurma Mongo iş:: launchctl ile

Liste Mongo iş

launchctl stop <job label> 

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

başlatın Mongo iş:

launchctl start <job label> 
+0

Bu benim için çalışıyor. – realhu

2

Bu eski bir soru ama aynı zamanda aranırken onun bir buldum.

Eğer brew ile kurduysanız o zaman çözüm aslında bu olacaktır:

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

11

Basit yolu MongoDB işlem kimliği almak ve öldürmektir. Lütfen veritabanı için zarar görebileceğinden, bunun için -9 pid'i KULLANMAYIN.

yüzden, 1. MongoDB pid almak

$ pgrep Mongo

Eğer sen öldürmek kullanabilirsiniz

$ öldürmek -15 olarak Şimdi

Mongo'da pid, alacak iyi