1. ホーム
  2. macos

[解決済み] Mac OS Xでmongodを停止するクリーンな方法は何ですか?

2023-02-04 20:30:30

質問

私は mongo 1.8.2 を使っていますが、Mac 上でそれをきれいにシャットダウンする方法を見ようとしています。

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

> use admin
> db.shutdownServer()

出力ではシャットダウンされているはずですが、ps -ef | grep mongo を実行すると、アクティブなプロセスが表示されます。また、シャットダウンされていないかのように、mongo シェルを開いて DB を照会することができます。

ローカルでの 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

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-community

mongodbがすでに起動している場合に停止させる。

brew services stop mongodb-community

更新 *

edufinnさんがコメントで指摘されているように brew services がユーザー定義コマンドとして利用できるようになり、以下のコマンドでインストールできるようになりました。 brew tap gapple/services .