Apakah mongodb berjalan?

117

Saya telah menginstal mongodb dan driver php di server unix saya.

Pertanyaan saya adalah bagaimana cara mengetahui apakah mongodb sedang berjalan? Apakah ada kueri baris perintah sederhana untuk memeriksa status? Jika saya memulainya sekali dari shell apakah itu akan tetap berjalan jika saya keluar dari shell (sepertinya tidak demikian). Bagaimana cara membuat koneksi mongodb tetap ada dan mulai otomatis saat reboot server?

Saya bisa berlari:

-bash-3.2 $ su
Sandi:
[root @ xxx] # cd / var / lib
[root @ xxx] # ./mongodb-linux-i686-1.6.5/bin/mongod
./mongodb-linux-i686-1.6. 5 / bin / mongod --bantuan untuk bantuan dan opsi startup
Rabu 23 Feb 08:06:54 MongoDB mulai: pid = 7271 port = 27017 dbpath = / data / db / 32-bit

** CATATAN: saat menggunakan MongoDB 32 bit, Anda dibatasi hingga sekitar 2 gigabyte data
** lihat http://blog.mongodb.org/post/137788967/32-bit-limitations

** PERINGATAN: Anda menjalankan OpenVZ. Ini diketahui rusak !!!

Rabu 23 Feb 08:06:54 db versi v1.6.5, pdfile versi 4.5
Rabu 23 Feb 08:06:54 versi git: 0eb017e9b2828155a67c5612183337b89e12e291
Rab 23 Feb 08:06:54 sys info: Linux domU-12-31-39-01 -70-B4 2.6.21.7-2.fc8xen # 1 SMP Jum
15 Feb 12:39:36 EST 2008 i686 BOOST_LIB_VERSION = 1_37
Rab 23 Feb 08:06:54 [initandlisten] menunggu koneksi di port 27017
Rab 23 Feb 08: 06:54 [websvr] antarmuka admin web mendengarkan pada port 28017

Jika saya membuka shell terpisah, saya kemudian dapat terhubung ke mongodb:

-bash-3.2 $ cd / var / lib
-bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
MongoDB versi shell: 1.6.5
menghubungkan ke: test
db.foo.find ()
{" _id ": ObjectId (" 4d63d7d3eb95985ab19c8feb ")," a ": 1}

Namun jika saya menutup shell awal, saya tidak dapat terhubung:

-bash-3.2 $ cd / var / lib
-bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
MongoDB versi shell: 1.6.5
menghubungkan ke: tes
Rabu 23 Feb 08:25:10 Kesalahan : tidak dapat terhubung ke server 127.0.0.1 (anon): 1154
pengecualian: koneksi gagal

Komunitas
sumber

Jawaban:

144

periksa dengan salah satu:

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

atau

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

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

atau

   service mongod status

untuk melihat apakah mongod sedang berjalan (Anda harus menjadi root untuk melakukan ini, atau mengawali semuanya dengan sudo). Harap dicatat bahwa perintah 'grep' juga akan selalu muncul sebagai proses terpisah.

periksa file log /var/log/mongo/mongo.log untuk melihat apakah ada masalah yang dilaporkan

Tilo
sumber
20
harus: status layanan mongodb
MhdSyrwan
12
Anda juga bisa melakukan pgrep mongo.
slm
1
Saya mendapatkan ini: 501 5365 418 0 16:10 ttys000 0: 00.00 grep mongo, apakah itu berarti sedang berjalan?
L1ghtk3ira
1
status layanan mongod tidak berfungsi untuk saya, tetapi status layanan mongodb berfungsi.
viks
5
dari mongo 2.6 layanannya mongod sebelumnya mongodbnya, membingungkan ya
tsukimi
40

Saya menemukan:

ps -ax | grep mongo

Agar lebih konsisten. Nilai yang dikembalikan dapat digunakan untuk mendeteksi berapa banyak contoh mongod yang sedang berjalan

Mark Gia Bao Nguyen
sumber
6
Selain itu, Anda mungkin ingin mempertimbangkan untuk menambahkan filter agar tidak mengembalikan proses grep yang Anda jalankan. Jadi: ps -ax | grep -v grep | grep mongo
DCaugs
34

Untuk segera memeriksa apakah mongodb sedang berjalan, trik nc cepat ini akan memberi tahu Anda.

nc -zvv localhost 27017

Perintah di atas mengasumsikan bahwa Anda menjalankannya di port default di localhost.

Untuk memulainya secara otomatis, Anda mungkin ingin melihat utas ini .

PiyushW
sumber
1
Ya, ini berfungsi jika hanya memeriksa apakah ada sesuatu yang mendengarkan port. Jika demikian, output akan berisi 27017 open, atau yang lainnya Connection refused.
Alexander
12

ini seharusnya bekerja dengan baik ...

pgrep mongod

Vinu Joseph
sumber
9

Untuk memeriksa status penggunaan mongodb yang sedang berjalan: sudo service mongodb status

magma
sumber
8

Benar, menutup shell akan menghentikan MongoDB. Coba gunakan --forkbaris perintah arg untuk proses mongod yang membuatnya berjalan sebagai daemon. Saya bukan ahli Unix, tapi saya yakin pasti ada cara untuk membuatnya mulai otomatis saat mesin dinyalakan.

misalnya

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

Lihat dokumentasi lengkap tentang Memulai dan Menghentikan Mongo .

AdaTheDev
sumber
Terima kasih. Saya mendapatkan ini: [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: 7518tetapi masih ketika saya menutup shell dan membuka yang baru saya dapatkanConnect failed
hmm, berfungsi untuk saya (Ubuntu 64bit VM, Mongo v1.7.6), jadi saya tidak yakin mengapa ini bukan untuk Anda tbh. Jika Anda tidak dapat membuatnya berfungsi, cara terbaik adalah mempostingnya di forum mongodb: groups.google.com/group/mongodb-user
AdaTheDev
Tapi saya memulainya &, dan sekarang saya tidak dapat menemukan processidnya.
bobobobo
@bobobobo - bagaimana Anda mencoba menemukan ID proses?
Tass
ps -e | grep mongod
bobobobo
3

Anda dapat menggunakan perintah di bawah ini, untuk memeriksa status MongoDB, misalnya: sudo service MongoDB statusyang menampilkan status layanan MongoDB seperti tangkapan layar:

Status MongoDB

Suneth
sumber
2

Mungkin karena saya tidak mematikan server dev saya dengan benar atau alasan serupa. Untuk memperbaikinya, lepaskan kunci dan mulai server dengan: sudo rm /var/lib/mongodb/mongod.lock ; sudo start mongodb

G Kiran Kumar Reddy
sumber
1

Saya tahu ini untuk php, tetapi saya sampai di sini mencari solusi untuk node. Menggunakan mongoskin:

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

Dengan driver lain, Anda dapat mencoba membuat koneksi dan jika gagal, Anda tahu server mongo sedang down. Mongoskin perlu benar-benar melakukan panggilan (seperti ping) karena terhubung dengan malas. Untuk php, Anda bisa menggunakan metode try-to-connect. Buat skrip!

PHP:

$dbIsRunning = true
try {
  $m = new MongoClient('localhost:27017');
} catch($e) {
  $dbIsRunning = false
}
BT
sumber