web-dev-qa-db-ja.com

Mac OS Xでmongodbを停止するクリーンな方法は何ですか?

私はmongo 1.8.2を実行していて、Macできれいにシャットダウンする方法を試しています。

私たちのubuntuサーバーでは、mongoシェルからmongoをきれいにシャットダウンできます:

> use admin
> db.shutdownServer()

しかし、私のMacでは、mongodプロセスを殺しません。出力は、シャットダウンする必要があることを示していますが、i ps -ef | grep mongoはアクティブなプロセスを示しています。また、私はまだmongoシェルを開いて、決してシャットダウンされなかったように私のデータベースを照会できます。

私のdb.shutdownServer()からの出力はローカルに:

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

プロセスを強制終了することはできますが、もっときれいにしたいです。

72
emilebaizel

これはおそらく、launchctlがmongodインスタンスを管理しているためです。 mongodインスタンスを起動およびシャットダウンする場合は、まずそれをアンロードします。

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

次に、mongodを手動で起動します。

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

~/Library/LaunchAgents/org.mongodb.mongod.plistからmongod.confの場所を見つけることができます。

その後、db.shutdownServer()は問題なく動作します。

2014年2月22日追加:

Homebrew経由でmongodbをインストールしている場合、homebrewには実際に便利なbrew servicesコマンドがあります。現在実行中のサービスを表示するには:

brew services list

Mongodbを起動するには:

brew services start mongodb

Mongodbが既に実行されている場合に停止するには:

brew services stop mongodb

更新

Edufinnがコメントで指摘したように、brew servicesはユーザー定義コマンドとして使用可能になり、次のコマンドでインストールできます:brew tap gapple/services

151
James Chen

Homebrewでmongodbをインストールした場合、より簡単な方法があります。

Launchctlでmongoジョブをリストします:

launchctl list | grep mongo

Mongoジョブを停止します。

launchctl stop <job label>

(私にとってこれはlaunchctl stop homebrew.mxcl.mongodbです)

Mongoジョブを開始します。

launchctl start <job label>
26
Raphael

簡単な方法は、mongodbのプロセスIDを取得して強制終了することです。データベースに損傷を与える可能性があるため、これにはkill -9 pidを使用しないでください。

そう、1。mongodbのpidを取得

$ pgrep mongo

あなたは今、mongoのpidを取得します

殺す

Kill -15も使用できます

20

portコマンド自体を使用してMongoDBサーバーを停止することを好みます。

Sudo port unload mongodb

そして、再びそれを開始します。

Sudo port load mongodb
4
Rafa

これらのドキュメントをご覧ください。

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

ターミナルで起動した場合は、ctrl + 'c'で大丈夫です-これはクリーンなシャットダウンを行います。

ただし、launchctlを使用している場合、そのインストール方法に応じて異なる特定の指示があります。

Homebrewを使用している場合、launchctl stop homebrew.mxcl.mongodbになります

3
Tyler Brock

これは古い質問ですが、検索中に見つけたものです。

brewを使用してインストールした場合、実際の解決策は次のようになります。

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

2