Mongodb có đang chạy không?


117

Tôi đã cài đặt mongodb và các trình điều khiển php trên máy chủ unix của mình.

Câu hỏi của tôi là làm thế nào tôi có thể biết mongodb đang chạy? Có một truy vấn dòng lệnh đơn giản để kiểm tra trạng thái không? Nếu tôi khởi động nó một lần từ shell thì nó sẽ tiếp tục chạy nếu tôi thoát khỏi shell (điều này có vẻ không đúng). Làm cách nào để kết nối mongodb liên tục và tự động khởi động khi khởi động lại máy chủ?

Tôi có thể chạy:

-bash-3.2 $ su
Mật khẩu:
[root @ xxx] # cd / var / lib
[root @ xxx] # ./mongodb-linux-i686-1.6.5/bin/mongod
./mongodb-linux-i686-1.6. 5 / bin / mongod - trợ giúp để được trợ giúp và các tùy chọn khởi động
Thứ 4 ngày 23 tháng 2 08:06:54 Bắt đầu MongoDB: pid = 7271 port = 27017 dbpath = / data / db / 32-bit

** LƯU Ý: khi sử dụng MongoDB 32 bit, bạn bị giới hạn khoảng 2 gigabyte dữ liệu
** xem tại http://blog.mongodb.org/post/137788967/32-bit-limitations

** CẢNH BÁO: Bạn đang chạy trong OpenVZ. Cái này biết là hỏng !!!

Thứ Tư ngày 23 tháng 2 08:06:54 phiên bản db v1.6.5, phiên bản pdfile 4.5
Thứ tư ngày 23 tháng 2 08:06:54 phiên bản git: 0eb017e9b2828155a67c5612183337b89e12e291
Ngày 23 tháng 2 Thứ tư 08:06:54 Thông tin hệ thống: Linux domU-12-31-39-01 -70-B4 2.6.21.7-2.fc8xen # 1 SMP Thứ sáu,
15 tháng 2 12:39:36 EST 2008 i686 BOOST_LIB_VERSION = 1_37
T4 23 tháng 2 08:06:54 [initandlisten] chờ kết nối trên cổng 27017
T4 23 tháng 2 08: 06:54 [websvr] giao diện quản trị web đang lắng nghe trên cổng 28017

Nếu tôi mở một shell riêng biệt thì tôi có thể kết nối với mongodb:

-bash-3.2 $ cd / var / lib
-bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
MongoDB phiên bản shell: 1.6.5 đang
kết nối với: test
db.foo.find ()
{" _id ": ObjectId (" 4d63d7d3eb95985ab19c8feb ")," a ": 1}

Tuy nhiên, nếu tôi đóng trình bao ban đầu, tôi không thể kết nối:

-bash-3.2 $ cd / var / lib
-bash-3.2 $ ./mongodb-linux-i686-1.6.5/bin/mongo
MongoDB phiên bản shell: 1.6.5 đang
kết nối với: kiểm tra
Thứ tư ngày 23 tháng 2 08:25:10 Lỗi : không thể kết nối với máy chủ 127.0.0.1 (anon):
ngoại lệ 1154 : kết nối không thành công

Câu trả lời:


144

kiểm tra bằng một trong hai:

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

hoặc là

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

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

hoặc là

   service mongod status

để xem mongod có đang chạy hay không (bạn cần root để thực hiện việc này hoặc đặt tiền tố cho mọi thứ sudo). Xin lưu ý rằng lệnh 'grep' cũng sẽ luôn hiển thị dưới dạng một quá trình riêng biệt.

kiểm tra tệp nhật ký /var/log/mongo/mongo.log để xem có bất kỳ sự cố nào được báo cáo không


20
nên là: Tình trạng dịch vụ MongoDB
MhdSyrwan

12
Bạn cũng có thể làm một pgrep mongo.
slm

1
Tôi nhận được cái này: 501 5365 418 0 4:10 chiều ttys000 0: 00.00 grep mongo, có nghĩa là nó đang chạy?
L1ghtk3ira

1
trạng thái mongod dịch vụ không hoạt động đối với tôi, nhưng trạng thái mongodb dịch vụ đã hoạt động.
viks

5
từ Mongo 2,6 dịch vụ là mongod trước MongoDB của nó, có khó hiểu
tsukimi

40

Tôi thấy:

ps -ax | grep mongo

Để nhất quán hơn rất nhiều. Giá trị trả về có thể được sử dụng để phát hiện có bao nhiêu phiên bản mongod đang chạy


6
Ngoài ra, bạn có thể muốn xem xét thêm một bộ lọc để không trả lại quá trình grep mà bạn đang chạy. Vì vậy: ps -ax | grep -v grep | grep mongo
DCaugs

34

Để kiểm tra nhanh xem mongodb có đang chạy hay không, thủ thuật nc nhanh này sẽ cho bạn biết.

nc -zvv localhost 27017

Lệnh trên giả định rằng bạn đang chạy nó trên cổng mặc định trên localhost.

Để tự động khởi động nó, bạn có thể muốn xem chuỗi này .


1
Có, điều này hoạt động nếu chỉ kiểm tra xem có thứ gì đó đang lắng nghe cổng hay không. Nếu trường hợp đó xảy ra, đầu ra sẽ chứa 27017 openhoặc khác Connection refused.
Alexander


9

Để kiểm tra trạng thái chạy hiện tại của việc sử dụng mongodb: sudo service mongodb status


8

Chính xác, đóng trình bao sẽ dừng MongoDB. Hãy thử sử dụng --forkdòng lệnh đối với quy trình mongod để thay thế nó chạy dưới dạng daemon. Tôi không phải là chuyên gia Unix, nhưng tôi chắc chắn phải có cách để làm cho nó tự động khởi động khi máy khởi động.

ví dụ

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

Kiểm tra tài liệu đầy đủ về Bắt đầu và Dừng Mongo .


Cảm ơn. Tôi nhận điều này: [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: 7518nhưng vẫn khi tôi đóng vỏ và mở một cái mới tôi nhận đượcConnect failed

hmm, phù hợp với tôi (Ubuntu 64bit VM, Mongo v1.7.6), vì vậy tôi không chắc tại sao nó không dành cho bạn tbh. Nếu bạn không thể làm cho nó hoạt động, tốt nhất là bạn có thể đăng nó lên các diễn đàn mongodb: groups.google.com/group/mongodb-user
AdaTheDev

Nhưng tôi đã bắt đầu với nó &và bây giờ tôi không thể tìm thấy trình xử lý.
bobobobo

@bobobobo - bạn đang cố gắng tìm ID quy trình như thế nào?
Tass

ps -e | grep mongod
bobobobo

3

Bạn có thể sử dụng lệnh dưới đây để kiểm tra trạng thái MongoDB, ví dụ: sudo service MongoDB statushiển thị trạng thái của dịch vụ MongoDB như ảnh chụp màn hình:

Trạng thái MongoDB


2

Có thể là do tôi đã không tắt máy chủ nhà phát triển của mình đúng cách hoặc một lý do tương tự. Để khắc phục, hãy tháo khóa và khởi động máy chủ bằng: sudo rm /var/lib/mongodb/mongod.lock ; sudo start mongodb


1

Tôi biết điều này là dành cho php, nhưng tôi đã ở đây để tìm giải pháp cho nút. Sử dụng 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
})

Với các trình điều khiển khác, bạn có thể cố gắng tạo kết nối và nếu nó không thành công, bạn sẽ biết máy chủ mongo bị lỗi. Mongoskin thực sự cần thực hiện một số cuộc gọi (như ping) vì nó kết nối một cách lười biếng. Đối với php, bạn có thể sử dụng phương pháp thử kết nối. Tạo một kịch bản!

PHP:

$dbIsRunning = true
try {
  $m = new MongoClient('localhost:27017');
} catch($e) {
  $dbIsRunning = false
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.