Mongodb koşuyor mu?


117

Mongodb ve php sürücülerini unix sunucuma kurdum.

Sorum şu ki, mongodb'un koşup koşmadığını nasıl anlayabilirim? Durumu kontrol etmek için basit bir komut satırı sorgusu var mı? Kabuktan bir kez başlatırsam, kabuktan çıkarsam çalışmaya devam edecek mi (durum böyle görünmüyor). Mongodb bağlantısını nasıl kalıcı hale getirebilirim ve sunucu yeniden başlatıldığında otomatik olarak başlatabilirim?

Koşabilirim:

-bash-3.2 $ su
Şifre:
[root @ xxx] # cd / var / lib
[root @ xxx] # ./mongodb-linux-i686-1.6.5/bin/mongod
./mongodb-linux-i686-1.6. 5 / bin / mongod - yardım ve başlatma seçenekleri için yardım
23 Şubat Çarşamba 08:06:54 MongoDB başlangıç: pid = 7271 bağlantı noktası = 27017 dbpath = / data / db / 32-bit

** NOT: MongoDB 32 bit kullanırken, yaklaşık 2 gigabayt veri ile sınırlandırılırsınız
** bkz. Http://blog.mongodb.org/post/137788967/32-bit-limitations

** UYARI: OpenVZ'de çalışıyorsunuz. Bunun kırıldığı biliniyor !!!

23 Çar Şubat 08:06:54 db sürümü v1.6.5, pdfile sürümü 4.5
Çar Şubat 23 08:06:54 git sürümü: 0eb017e9b2828155a67c5612183337b89e12e291
23 Şubat Çarşamba 08:06:54 sys bilgisi: Linux domU-12-31-39-01 -70-B4 2.6.21.7-2.fc8xen # 1 SMP
15 Şubat Cuma 12:39:36 EST 2008 i686 BOOST_LIB_VERSION = 1_37
23 Şubat Çar 08:06:54 [initandlisten] 27017
Çar 23 Şubat 08 bağlantı noktasında bağlantı bekliyor : 06:54 [websvr] web yönetici arayüzü 28017 numaralı bağlantı noktasından dinleme

Ayrı bir kabuk açarsam, daha sonra mongodb'a bağlanabilirim:

-bash-3.2 $ cd / var / lib
-bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
MongoDB kabuk sürümü: 1.6.5
bağlanma: test
db.foo.find ()
{" _id ": ObjectId (" 4d63d7d3eb95985ab19c8feb ")," a ": 1}

Ancak ilk kabuğu kapatırsam bağlanamıyorum:

-bash-3.2 $ cd / var / lib
-bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
MongoDB kabuk sürümü: 1.6.5
bağlanma: test
23 Şubat Çarşamba 08:25:10 Hata : 127.0.0.1 (anon) sunucusuna bağlanılamadı: 1154
istisna: bağlantı başarısız oldu

Yanıtlar:


144

şunlardan birini kontrol edin:

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

veya

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

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

veya

   service mongod status

mongod'un çalışıp çalışmadığını görmek için (bunu yapmak için root olmanız veya her şeyin önüne sudo ). Lütfen 'grep' komutunun da her zaman ayrı bir işlem olarak görüneceğini unutmayın.

Bildirilen herhangi bir sorun olup olmadığını görmek için /var/log/mongo/mongo.log günlük dosyasını kontrol edin


20
olmalıdır: service mongodb status
MhdSyrwan

12
Ayrıca bir pgrep mongo.
slm

1
Bunu anladım: 501 5365 418 0 4:10 pm ttys000 0: 00.00 grep mongo, bu onun çalıştığı anlamına mı geliyor?
L1ghtk3ira

1
hizmet mongod durumu benim için işe yaramadı, ancak hizmet mongod durumu çalıştı.
viks

5
mongo 2.6'dan itibaren hizmet mongod'dan önce mongoddur, kafa karıştırıcı evet
tsukimi

40

Buldum:

ps -ax | grep mongo

Çok daha tutarlı olmak için. Döndürülen değer, kaç tane Mongod örneğinin çalıştığını tespit etmek için kullanılabilir


6
Ayrıca, çalıştırdığınız grep işlemini döndürmemek için bir filtre eklemeyi düşünebilirsiniz. Yani: ps -ax | grep -v grep | grep mongo
DCaugs

34

Mongodb'un çalışıp çalışmadığını hızlı bir şekilde kontrol etmek için, bu hızlı nc numarası size haber verecektir.

nc -zvv localhost 27017

Yukarıdaki komut, onu localhost üzerindeki varsayılan bağlantı noktasında çalıştırdığınızı varsayar.

Otomatik olarak başlatmak için bu ileti dizisine bakmak isteyebilirsiniz .


1
Evet, bu bağlantı noktasını dinleyen bir şey olup olmadığını kontrol etmekle işe yarar. Bu durumda çıktı 27017 open, veya başka bir şey içerecektir Connection refused.
Alexander


9

Mongodb kullanımının mevcut çalışma durumunu kontrol etmek için: sudo service mongodb status


8

Doğru, kabuğun kapatılması MongoDB'yi durduracak. Kullanmayı deneyin--forkBunun yerine arka plan programı olarak çalışmasını sağlayan mongod işlemi için arg komut satırını . Ben bir Unix uzmanı değilim, ama eminim ki makine açıldığında onu otomatik olarak başlatmanın bir yolu olmalı.

Örneğin

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

Mongo'yu Başlatma ve Durdurma hakkındaki tüm belgeleri inceleyin .


Teşekkürler. Bunu anladım: [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: 7518ama yine de kabuğu kapattığımda ve Connect failed

hmm, benim için çalışıyor (Ubuntu 64bit VM, Mongo v1.7.6), bu yüzden neden sizin için olmadığından emin değilim tbh. Çalışamıyorsanız, en iyi bahis mongodb forumlarında yayınlamak olabilir: groups.google.com/group/mongodb-user
AdaTheDev

Ama onunla başladım &ve şimdi işlem kimliğini bulamıyorum.
bobobobo

@bobobobo - işlem kimliğini nasıl bulmaya çalışıyorsunuz?
Tass

ps -e | grep mongod
bobobobo

3

MongoDB durumunu kontrol etmek için aşağıdaki komutu kullanabilirsiniz, örneğin: sudo service MongoDB statusMongoDB hizmetinin durumunu ekran görüntüsü gibi görüntüler:

MongoDB durumu


2

Muhtemelen dev sunucumu düzgün bir şekilde kapatmadığım veya benzer bir nedenden dolayı. Düzeltmek için kilidi kaldırın ve sunucuyu şu şekilde başlatın: sudo rm /var/lib/mongodb/mongod.lock ; sudo start mongodb


1

Bunun php için olduğunu biliyorum, ama buraya düğüm için bir çözüm arıyorum. Mongoskin kullanarak:

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
})

Diğer sürücülerle bir bağlantı kurmayı deneyebilirsiniz ve bağlantı başarısız olursa, mongo sunucusunun çalışmadığını anlarsınız. Mongoskin tembel bağlantı kurduğu için aslında bir arama (ping gibi) yapmalı. Php için bağlanmayı dene yöntemini kullanabilirsiniz. Bir senaryo yapın!

PHP:

$dbIsRunning = true
try {
  $m = new MongoClient('localhost:27017');
} catch($e) {
  $dbIsRunning = false
}
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.