2011-12-13 5 views
56

私はmongo 1.8.2を実行していて、Macでクリーンにシャットダウンする方法を知ろうとしています。私はモンゴシェルからきれいにシャットダウンモンゴすることができます私たちのUbuntuのサーバー上でMac OS Xでmongodを停止するにはどうしたらいいですか?

> use admin 
> db.shutdownServer() 

が、私のMac上で、それはのmongodプロセスを強制終了しません。出力はシャットダウンされるべきであることを示しますが、i ps -ef | grep mongoそれは私に活発なプロセスを示しています。また、私はまだmongoシェルを開いて、決してシャットダウンされなかったように自分のdbsに問い合わせることができます。ローカル

私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 

私はちょうどプロセスを強制終了することができます知っているが、私はもっときれいにそれを行うにしたいと思います。

+0

どのように 'mongod'を始めましたか?ちょうどシェルで? 'launchctl'を使う? – dcrosta

+0

ログの情報はありますか? MongoDBが「自動再起動」している可能性があります。 '--logappend'を実行したいかもしれませんが、新しいログファイルはプロセスが再開したことを明確に示しています。 –

答えて

121

だろうにlaunchctlがあなたのmongodインスタンスを管理しているので、それはおそらくです。その後

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

手動のmongodを起動します:あなたが起動とシャットダウンは、インスタンスをのmongodしたい場合は、その最初をアンロード

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

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

その後、db.shutdownServer()は正常に動作します。

を追加しました2014年2月22日:あなたが自作を介してインストールするMongoDBを持っている場合は

は、自作は実際に便利なbrew servicesコマンドを持っています。それはすでに実行している場合にMongoDBを停止するには

brew services start mongodb

:MongoDBのを開始するには

brew services list

:現在実行中のサービスを表示するには

brew services stop mongodb

を更新

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

+0

それはそれでした。ありがとう! – emilebaizel

+21

誰かが興味を持っている場合は、現在、homebrew経由でmongodbをインストールしていれば、実際にmongodbを停止するには 'launchctl stop homebrew.mxcl.mongodb'を実行する必要があります。 –

+3

2014年9月には、「醸造サービス」に関する「醸造」の廃止通知があります。「$醸造サービス 警告:醸造サービスはサポートされておらず、すぐに削除されます」 –

3

は、これらのドキュメントをチェックアウト:

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

あなたはターミナルでそれを開始した場合は、ctrl + 'c'で[OK]をする必要があり - これは、クリーンシャットダウンを行います。

ただし、launchctlを使用している場合は、インストール方法によって異なる具体的な手順があります。

あなたが自作を使用している場合、それはlaunchctl stop homebrew.mxcl.mongodb

4

portコマンドを使用してMongoDBサーバーを停止することをお勧めします。

sudo port unload mongodb 

もう一度開始してください。

sudo port load mongodb 
+2

Macportがインストールされている場合にのみ動作します。 –

21

あなたが自作でのMongoDBをインストールした場合は、より簡単な方法があります:launchctlを持つ

リストのmongoジョブは:

launchctl list | grep mongo 

停止モンゴジョブ:

launchctl stop <job label> 

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

スタートモンゴジョブ:

launchctl start <job label> 
+0

これは私のために働く。 – realhu

2

これは、古い質問が、同様に検索しているときに私が見つけたその1です。

あなたはbrewでインストールした場合、その後ソリューションは、実際にはこのようになります:

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

11

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

ので、 1.あなたはあなたが殺す使用すること

を殺す今

$、モンゴのPIDを取得するのpgrepモンゴ

MongoDBの

$のPIDを取得する-15としてよく

関連する問題