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


84

私はmongo1.8.2を実行していて、Macでそれをきれいにシャットダウンする方法を確認しようとしています。

私たちのubuntuサーバーでは、次の方法でmongoシェルからmongoをクリーンにシャットダウンできます。

> use admin
> db.shutdownServer()

しかし、私のMacでは、mongodプロセスを強制終了しません。出力は、「シャットダウンする必要がある」ことを示していますが、i ps -ef | grepmongoそれは私にアクティブなプロセスを示しています。また、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

プロセスを強制終了できることはわかっていますが、もっとクリーンに実行したいと思います。


どうやって始めましたmongodか?シェルで?使い方launchctl
dcrosta 2011

ログから何か情報はありますか?MongoDBが「自動再起動」している可能性があります。で実行することをお勧めし--logappendますが、新しいログファイルは、プロセスが再起動したことを明確に示しています。
Gates VP

回答:


171

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

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

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

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

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

その後、問題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


23
誰かが興味を持っている場合、現在、自作でmongodbをインストールしている場合は、実際にlaunchctl stop homebrew.mxcl.mongodbmongodbを停止する必要があります。
タイラーブロック2013

3
2014年9月として、内非推奨通知がありbrewについては、brew services$ brew services Warning: brew services is unsupported and will be removed soon.
パブロ・ナバロ

3
2014年12月に、brew services削除されました。$ brew services Error: Unknown command: services
ヒューズ2014

6
brew servicesユーザー定義コマンドとして使用できるようになり、次のコマンドでインストールできますbrew tap gapple/services
edufinn 2015

1
mongodbサービスを開始した後、ノードサーバーがそれに接続できません。ただし、コマンドラインからmongodbを起動すると、正常に動作します。ポートの問題だと思います。サービス開始時にポートを設定するにはどうすればよいですか?
pravin 2015年

35

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

launchctlを使用してmongoジョブを一覧表示します。

launchctl list | grep mongo

mongoジョブを停止します:

launchctl stop <job label>

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

mongoジョブを開始します:

launchctl start <job label>

24

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

したがって、1。mongodbのpidを取得します

$ pgrep mongo

あなたはモンゴのpidを取得します、今

$キル

キル-15も使用できます


8

homebrewを介してmongodbコミュニティサーバーをインストールした場合は、次のことができます。

brew services list

これにより、現在のサービスが次のように一覧表示されます。

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

redis             stopped

次に、最初に停止して再起動することで、mongodbを再起動できます。

brew services stop mongodb
brew services start mongodb

4

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

sudo port unload mongodb

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

sudo port load mongodb

3

これらのドキュメントをチェックしてください:

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

ターミナルで起動した場合は、問題ないはずctrl + 'c'です。これにより、クリーンなシャットダウンが実行されます。

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

Homebrewを使用している場合は、 launchctl stop homebrew.mxcl.mongodb


1

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

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

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


0

サービスがbrew経由で実行されている場合は、次のコマンドを使用してサービスを停止できます。

brew services stop mongodb

0

他の人が提供したソリューションは、以前は私のために機能していましたが、現在は機能していません。これは次のとおりです。

brew services stop mongodb
brew services start mongodb

brew services list 与える

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

だから私は私のためmongodb-communitymongodb働いた代わりに使用しました

brew services stop mongodb-community
brew services start mongodb-community
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.