私は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
プロセスを強制終了することはできますが、もっときれいにしたいです。
これはおそらく、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
。
Homebrewでmongodbをインストールした場合、より簡単な方法があります。
Launchctlでmongoジョブをリストします:
launchctl list | grep mongo
Mongoジョブを停止します。
launchctl stop <job label>
(私にとってこれはlaunchctl stop homebrew.mxcl.mongodb
です)
Mongoジョブを開始します。
launchctl start <job label>
簡単な方法は、mongodbのプロセスIDを取得して強制終了することです。データベースに損傷を与える可能性があるため、これにはkill -9 pidを使用しないでください。
そう、1。mongodbのpidを取得
$ pgrep mongo
あなたは今、mongoのpidを取得します
殺す
Kill -15も使用できます
port
コマンド自体を使用してMongoDBサーバーを停止することを好みます。
Sudo port unload mongodb
そして、再びそれを開始します。
Sudo port load mongodb
これらのドキュメントをご覧ください。
ターミナルで起動した場合は、ctrl + 'c'
で大丈夫です-これはクリーンなシャットダウンを行います。
ただし、launchctlを使用している場合、そのインストール方法に応じて異なる特定の指示があります。
Homebrewを使用している場合、launchctl stop homebrew.mxcl.mongodb
になります
これは古い質問ですが、検索中に見つけたものです。
brew
を使用してインストールした場合、実際の解決策は次のようになります。
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist