Cách dễ dàng để dừng mongod trên Mac OS X là gì?


84

tôi đang chạy mongo 1.8.2 và đang cố gắng tìm cách tắt nó trên Mac.

trên các máy chủ ubuntu của chúng tôi, tôi có thể tắt mongo một cách sạch sẽ khỏi trình bao mongo bằng:

> use admin
> db.shutdownServer()

nhưng trên máy Mac của tôi, nó không giết tiến trình mongod. đầu ra cho thấy rằng nó 'nên được' tắt nhưng khi tôi ps -ef | grep mongo nó cho tôi thấy một quá trình đang hoạt động. Ngoài ra, tôi vẫn có thể mở một trình bao mongo và truy vấn dbs của mình như thể nó chưa bao giờ tắt.

đầu ra từ cục bộ db.shutdownServer () của tôi là:

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

tôi biết tôi có thể giết quá trình nhưng tôi muốn làm nó sạch sẽ hơn.


Bạn đã bắt đầu mongodnhư thế nào? Chỉ tại cái vỏ? Sử dụng launchctl?
dcrosta

Bạn có bất kỳ thông tin từ các bản ghi? Có thể là MongoDB đang "tự động khởi động lại". Bạn có thể muốn chạy với --logappend, mặc dù một tệp nhật ký hoàn toàn mới là một dấu hiệu rõ ràng rằng quá trình đã khởi động lại.
Gates VP

Câu trả lời:


171

Có thể là do khởi chạy đang quản lý phiên bản mongod của bạn. Nếu bạn muốn khởi động và tắt cá thể mongod, hãy dỡ bỏ phiên bản đó trước:

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

Sau đó khởi động mongod theo cách thủ công:

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

Bạn có thể tìm thấy vị trí mongod.conf của mình từ ~/Library/LaunchAgents/org.mongodb.mongod.plist.

Sau đó, db.shutdownServer()sẽ hoạt động tốt.

Đã thêm ngày 22 tháng 2 năm 2014:

Nếu bạn đã cài đặt mongodb qua homebrew, homebrew thực sự có một brew serviceslệnh hữu ích . Để hiển thị các dịch vụ đang chạy hiện tại:

brew services list

Để bắt đầu mongodb:

brew services start mongodb

Để dừng mongodb nếu nó đã chạy:

brew services stop mongodb

Cập nhật

Như edufinn chỉ ra trong các bình luận, brew servicesbây giờ là có sẵn như là lệnh do người dùng định nghĩa và có thể được cài đặt với lệnh sau: brew tap gapple/services.


23
Trong trường hợp bất kỳ ai quan tâm, hiện tại, nếu bạn đã cài đặt mongodb qua homebrew, bạn thực sự cần phải làm gì launchctl stop homebrew.mxcl.mongodbđể dừng mongodb.
Tyler Brock

3
Kể từ tháng 9 năm 2014, có một thông báo ngừng sử dụng brewliên quan đến brew services:$ brew services Warning: brew services is unsupported and will be removed soon.
Pablo Navarro

3
Kể từ tháng 12 năm 2014, brew servicesđã bị xóa. $ brew services Error: Unknown command: services
ôm

6
brew servicesbây giờ là có sẵn như là lệnh do người dùng định nghĩa và có thể được cài đặt với lệnh sau: brew tap gapple/services.
edufinn

1
Sau khi tôi khởi động dịch vụ mongodb, máy chủ nút của tôi không thể kết nối với nó. Tuy nhiên, nếu tôi bắt đầu mongodb từ dòng lệnh, nó hoạt động tốt. Tôi đoán nó phải là vấn đề cổng .. Làm thế nào để đặt cổng khi bắt đầu dịch vụ?
pravin

35

Nếu bạn đã cài đặt mongodb bằng homebrew, có một cách dễ dàng hơn:

Liệt kê công việc mongo với Launcctl:

launchctl list | grep mongo

Dừng công việc mongo:

launchctl stop <job label>

(Đối với tôi đây là launchctl stop homebrew.mxcl.mongodb)

Bắt đầu công việc mongo:

launchctl start <job label>

24

Cách đơn giản là lấy id tiến trình của mongodb và giết nó. Xin lưu ý KHÔNG SỬ DỤNG kill -9 pid cho việc này vì nó có thể gây hỏng cơ sở dữ liệu.

vì vậy, 1. lấy pid của mongodb

$ pgrep mongo

bạn sẽ nhận được pid của mongo, Bây giờ

$ giết

Bạn cũng có thể sử dụng kill -15


8

Nếu bạn đã cài đặt máy chủ cộng đồng mongodb thông qua homebrew, thì bạn có thể làm:

brew services list

Điều này sẽ liệt kê các dịch vụ hiện tại như sau:

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

redis             stopped

Sau đó, bạn có thể khởi động lại mongodb bằng cách dừng đầu tiên và khởi động lại:

brew services stop mongodb
brew services start mongodb

4

Tôi muốn dừng máy chủ MongoDB bằng portchính lệnh.

sudo port unload mongodb

Và để bắt đầu lại.

sudo port load mongodb

3

Kiểm tra các tài liệu sau:

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

Nếu bạn đã khởi động nó trong một thiết bị đầu cuối, bạn sẽ thấy ổn với một ctrl + 'c'- điều này sẽ thực hiện việc tắt hoàn toàn.

Tuy nhiên, nếu bạn đang sử dụng Launcctl, có các hướng dẫn cụ thể cho điều đó sẽ khác nhau tùy thuộc vào cách nó được cài đặt.

Nếu bạn đang sử dụng Homebrew, nó sẽ là launchctl stop homebrew.mxcl.mongodb


1

Đây là một câu hỏi cũ, nhưng là câu hỏi mà tôi đã tìm thấy trong khi tìm kiếm.

Nếu bạn đã cài đặt với brewthì giải pháp thực sự sẽ là:

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


0

Nếu dịch vụ đang chạy qua brew, bạn có thể dừng dịch vụ bằng lệnh sau:

brew services stop mongodb

0

Các giải pháp được cung cấp bởi những người khác đã từng hiệu quả với tôi nhưng không còn hiệu quả với tôi nữa, như bên dưới.

brew services stop mongodb
brew services start mongodb

brew services list cho

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

Vì vậy, tôi đã sử dụng mongodb-communitythay vì mongodbđiều đó phù hợp với tôi

brew services stop mongodb-community
brew services start mongodb-community
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.